jQuery.ajax에서 응답 상태 코드를 얻는 방법
다음 코드에서는 jQuery.ajax 콜에서HTTP 응답 코드를 취득하려고 합니다.그런 다음 코드가 301(영구적으로 이동됨)인 경우 'Location' 응답 헤더를 표시합니다.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>jQuery 301 Trial</title>
<script src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
function get_resp_status(url) {
$.ajax({
url: url,
complete: function (jqxhr, txt_status) {
console.log ("Complete: [ " + txt_status + " ] " + jqxhr);
// if (response code is 301) {
console.log ("Location: " + jqxhr.getResponseHeader("Location"));
// }
}
});
}
</script>
<script type="text/javascript">
$(document).ready(function(){
$('a').mouseenter(
function () {
get_resp_status(this.href);
},
function () {
}
);
});
</script>
</head>
<body>
<a href="http://ow.ly/4etPl">Test 301 redirect</a>
<a href="http://cnn.com/not_found">Test 404 not found</a>
</body>
</html>
제가 어디가 잘못됐는지 누가 좀 지적해주시겠어요?Firebug에서 'jqxhr' 개체를 확인해도 상태 코드와 'Location' 응답 헤더를 찾을 수 없습니다.나는 complete의 마지막 줄에 중단점을 설정했다.
대단히 감사합니다.
jqXhr 객체에 상태 필드가 표시되어 있습니다.이 필드는 다음과 같이 동작합니다.
http://jsfiddle.net/magicaj/55HQq/3/
$.ajax({
//...
success: function(data, textStatus, xhr) {
console.log(xhr.status);
},
complete: function(xhr, textStatus) {
console.log(xhr.status);
}
});
비슷한 솔루션을 직접 찾다가 우연히 이 오래된 스레드를 발견했고, 사용 중인 것으로 인정된 답을 발견했다..complete()
의 방법jquery ajax
jquery 웹사이트의 공지사항을 인용합니다.
jqXHR.success(), jqXHR.error() 및 jqXHR.complete() 콜백은 jQuery 1.8에서 권장되지 않습니다.최종 삭제에 대비하여 코드를 준비하려면 jqXHR.done(), jqXHR.fail() 및 jqXHR.always()를 사용합니다.
를 알기 위해서status code
ajax 응답의 경우 다음 코드를 사용할 수 있습니다.
$.ajax( url [, settings ] )
.always(function (jqXHR) {
console.log(jqXHR.status);
});
같은 방법으로 동작합니다..done()
그리고..fail()
$.ajax 함수에 전달된 파라미터 객체의 statusCode 속성을 사용하는 것이 보다 관용적인 jQuery일 수 있습니다.
$.ajax({
statusCode: {
500: function(xhr) {
if(window.console) console.log(xhr.responseText);
}
}
});
그러나 Livingston Samuel이 말했듯이 javascript에서 301개의 상태 코드를 잡는 것은 불가능합니다.
XHR 요구가 리다이렉트 응답(HTTP Status 301, 302, 303, 307)을 반환하면XMLHttpRequest
는 자동으로 리다이렉트된 URL에 따라 해당 URL의 상태 코드를 반환합니다.
리다이렉트하지 않는 상태 코드(200, 400, 500 등)는,status
xhr 객체의 속성.
따라서 리다이렉트된 위치를 의 응답 헤더에서 가져올 수 없습니다.301
,302
,303
또는307
부탁한다.
브라우저가 리다이렉트를 처리하도록 하지 않고 서버 로직을 변경하여 리다이렉트를 처리할 수 있도록 해야 할 수도 있습니다.구현 예시.
console.log만 하면 응답 내용을 확인할 수 있습니다.속성에 상태 코드가 표시됩니다.jsons를 모르는 경우는, 다음의 비디오를 참조해 주세요.https://www.youtube.com/watch?v=Bv_5Zv5c-Ts
javascript를 보다 편안하게 사용할 수 있는 매우 기본적인 지식을 설명합니다.
Ajax 요청의 더 짧은 버전으로 수행할 수 있습니다. 위의 코드를 참조하십시오.
$.get("example.url.com", function(data) {
console.log(data);
}).done(function() {
// TO DO ON DONE
}).fail(function(data, textStatus, xhr) {
//This shows status code eg. 403
console.log("error", data.status);
//This shows status message eg. Forbidden
console.log("STATUS: "+xhr);
}).always(function() {
//TO-DO after fail/done request.
console.log("ended");
});
콘솔 출력 예:
error 403
STATUS: Forbidden
ended
nB: jQuery 3.4.1 사용
$.ajax({
url: URL,
success: function(data, textStatus, jqXHR){
console.log(textStatus + ": " + jqXHR.status);
// do something with data
},
error: function(jqXHR, textStatus, errorThrown){
console.log(textStatus + ": " + jqXHR.status + " " + errorThrown);
}
});
jqxhr은 json 객체입니다.
품품: :
1.의 경우) 상태를 하는 문자열("success " " " "jQHR(jQuery 1.4X, XMLHTTT)입니다.
참조: jQuery ajax
다음과 같이 합니다.
jqxhr.status
를
언급URL : https://stackoverflow.com/questions/5344145/how-to-get-response-status-code-from-jquery-ajax
'programing' 카테고리의 다른 글
기존의 모든 필드를 포함시키고 문서에 새 필드 추가 (0) | 2023.03.31 |
---|---|
archive-product.php의 변경이 기능하지 않는다. (0) | 2023.03.31 |
JSON 구조를 문서화하기 위한 구문 (0) | 2023.03.31 |
워드프레스에 코드를 삽입하는 방법 (0) | 2023.03.31 |
Spring Boot 응용 프로그램에서 커스텀 예외 스택트레이스 로깅 방지 (0) | 2023.03.31 |