sourcecode

jquery 응답 유형을 체크하는 방법.

copyscript 2023. 3. 20. 23:25
반응형

jquery 응답 유형을 체크하는 방법.

Jquery에서 Ajax 콜의 응답 유형을 판별하려면 어떻게 해야 합니까?서버가 json 응답을 보내는 경우도 있고 표시 목적으로 html만 보내는 경우도 있습니다.지금 사용하고 있습니다.

if(response.indexOf('Error'))
  //popup error message
else
 response.username
 response.address

다음과 같이 시험할 수 있습니다.

$.ajax({
  type: "POST",
  url: "your url goes here", 
  data: "data to be sent", 
  success: function(response, status, xhr){ 
    var ct = xhr.getResponseHeader("content-type") || "";
    if (ct.indexOf('html') > -1) {
      //do something
    }
    if (ct.indexOf('json') > -1) {
      // handle json here
    } 
  }
});

기본적으로는 indexOf도 사용하고 있지만, 보다 신뢰성이 높은 것 같습니다.

javascript의 간단한 방법으로 유형을 확인할 수 있습니다.

예.

if(typeof response=="object")
{
 // Response is javascript object
}
else
{
 // Response is HTML
}

이 방법을 사용하면 성공 콜백에 2개의 추가 파라미터를 쓸 필요가 없습니다.

응답이 JSON으로 해석될 경우jqXHR오브젝트는responseJSON소유물.

$.ajax(
    // ...
).done(function(data, textStatus, jqXHR) {
    if (jqXHR.responseJSON) {
        // handle JSON
    } else {
        // handle html
    }
}).fail(function(jqXHR, textStatus, errorThrown) {
    if (jqXHR.responseJSON) {
        // handle JSON
    else {
        // handle html
    }
})

jQuery.ajax 문서:

json을 지정하면 jQuery.parseJ를 사용하여 응답이 해석됩니다.오브젝트로서 성공 핸들러에 건네지기 전의 SON.해석된 JSON 오브젝트는 responseJ를 통해 사용할 수 있습니다.jqXHR 객체의 SON 속성.

위의 답변이 효과가 없었기 때문에 이 솔루션을 생각해 냈습니다.

success: function(data, textStatus , xhr) {
if(xhr.responseXML.contentType == "text/html") {
    //do something with html
    }
else if(xhr.responseXML.contentType == "application/json") {
    //do something with json
    }}

JSON 응답을 받아들이려면 응답 유형을 JSON으로 설정합니다.서버측 코드를 설계하고 있기 때문에, 항상 JSON의 회신을 받을 수 있습니다.어떠한 이유로 실패했을 경우, JSON 포맷이 잘못되어 AJAX 콜에서 에러가 발생하며, 서버로부터의 응답을 JSON이 아닌 것으로 처리할 수 있습니다.

error: function(response, status, xhr){ 
// do something with the reply.
}

언급URL : https://stackoverflow.com/questions/3741574/jquery-how-to-check-response-type-for-ajax-call

반응형