반응형
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
}
})
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
반응형
'sourcecode' 카테고리의 다른 글
게시 날짜를 저장하기 위해 두 열을 사용하여 Wordpress를 누르는 이유 (0) | 2023.03.20 |
---|---|
반응 + 재료 UI - 경고: Prop className이 일치하지 않습니다. (0) | 2023.03.20 |
Twitter api 텍스트 필드 값이 잘렸습니다. (0) | 2023.03.20 |
'NodeModule'.ts(2339) 유형에 'hot' 속성이 없습니다. (0) | 2023.03.20 |
bash 'ls' 출력을 json 배열로 변환합니다. (0) | 2023.03.20 |