Programing

jquery ajax 호출에 대한 응답 유형을 확인하는 방법

lottogame 2020. 10. 29. 07:45
반응형

jquery ajax 호출에 대한 응답 유형을 확인하는 방법


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 문서 :

If json is specified, the response is parsed using jQuery.parseJSON before being passed, as an object, to the success handler. The parsed JSON object is made available through the responseJSON property of the jqXHR object.


The answers above didnt work for me so I came up with this solution:

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
    }}

To accept a JSON reply, you can set the reply type as JSON. I usually design my server side code so they always return JSON reply. In the event it fails to do so for whatever reason, I would get an error in my AJAX call for having incorrect JSON format and I can process the reply from server as not being non 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

반응형