다음 코드에서 내가하려는 것은 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’응답 헤더를 찾을 수 없습니다. 나는 ‘완료’의 마지막 줄에 중단 점을 설정했습니다.
고맙습니다.
답변
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( 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이 말했듯이 자바 스크립트에서 301 상태 코드를 잡을 수는 없습니다.
답변
XHR 요청이 리디렉션 응답 (HTTP 상태 301, 302, 303, 307)을 XMLHttpRequest
반환하면 자동으로 리디렉션 된 URL을 따르고 해당 URL의 상태 코드를 반환합니다 .
status
xhr 객체 의 속성을 통해 리디렉션되지 않는 상태 코드 (200, 400, 500 등)를 얻을 수 있습니다 .
당신은의 응답 헤더에서 재 위치 얻을 수 있도록 301
, 302
, 303
또는 307
요청을.
브라우저에서 처리하도록하는 대신 리디렉션을 처리 할 수있는 방식으로 응답하도록 서버 논리를 변경해야 할 수도 있습니다. 예를 구현 .
답변
respone 내용을 확인하고 console.log 만 있으면 whitch 속성에 상태 코드가 있음을 알 수 있습니다. JSON을 이해하지 못하는 경우 비디오를 참조하십시오 : https://www.youtube.com/watch?v=Bv_5Zv5c-Ts
자바 스크립트에 익숙해 지도록하는 기본적인 지식을 설명합니다.
짧은 버전의 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
답변
jqxhr은 json 객체입니다.
완전한 리턴 :
jqXHR (jQuery 1.4.x, XMLHTTPRequest) 오브젝트 및 요청 상태를 분류하는 문자열 ( “성공”, “수정되지 않음”, “오류”, “시간 종료”, “중단”또는 “파서 오류”) .
참조 :
jQuery ajax
그래서 당신은 할 것입니다 :
jqxhr.status
상태를 얻기 위해
답변
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);
}
});