jQuery로 HTTP 상태 코드를 얻으려면 어떻게해야합니까?
페이지가 상태 코드 401을 반환하는지 확인하고 싶습니다. 가능합니까?
여기 내 시도가 있지만 0 만 반환합니다.
$.ajax({
url: "http://my-ip/test/test.php",
data: {},
complete: function(xhr, statusText){
alert(xhr.status);
}
});
이것은 jQuery $.ajax()
메소드 로 가능합니다.
$.ajax(serverUrl, {
type: OutageViewModel.Id() == 0 ? "POST" : "PUT",
data: dataToSave,
statusCode: {
200: function (response) {
alert('1');
AfterSavedAll();
},
201: function (response) {
alert('1');
AfterSavedAll();
},
400: function (response) {
alert('1');
bootbox.alert('<span style="color:Red;">Error While Saving Outage Entry Please Check</span>', function () { });
},
404: function (response) {
alert('1');
bootbox.alert('<span style="color:Red;">Error While Saving Outage Entry Please Check</span>', function () { });
}
}, success: function () {
alert('1');
},
});
세 번째 인수는 XMLHttpRequest 객체이므로 원하는 모든 작업을 수행 할 수 있습니다.
$.ajax({
url : 'http://example.com',
type : 'post',
data : 'a=b'
}).done(function(data, statusText, xhr){
var status = xhr.status; //200
var head = xhr.getAllResponseHeaders(); //Detail header info
});
오류 콜백을 사용하십시오.
예를 들면 :
jQuery.ajax({'url': '/this_is_not_found', data: {}, error: function(xhr, status) {
alert(xhr.status); }
});
404 알림
상태 코드를 사용하여 서버 응답 코드를 간단히 확인할 수있는이 솔루션을 찾았습니다 .
예 :
$.ajax({
type : "POST",
url : "/package/callApi/createUser",
data : JSON.stringify(data),
contentType: "application/json; charset=UTF-8",
success: function (response) {
alert("Account created");
},
statusCode: {
403: function() {
// Only if your server returns a 403 status code can it come in this block. :-)
alert("Username already exist");
}
},
error: function (e) {
alert("Server error - " + e);
}
});
$ .ajax 메서드 의 오류 기능도 구현해야한다고 생각합니다 .
error (XMLHttpRequest, textStatus, errorThrown) 함수
요청이 실패 할 경우 호출 할 함수입니다. 함수에는 세 가지 인수가 전달됩니다. XMLHttpRequest 객체, 발생한 오류 유형을 설명하는 문자열 및 예외가 발생한 경우 선택적 예외 객체입니다. 두 번째 인수 (null 제외)의 가능한 값은 "timeout", "error", "notmodified"및 "parsererror"입니다.
$.ajax({
url: "http://my-ip/test/test.php",
data: {},
complete: function(xhr, statusText){
alert(xhr.status);
},
error: function(xhr, statusText, err){
alert("Error:" + xhr.status);
}
});
$.ajax({
url: "http://my-ip/test/test.php",
data: {},
error: function(xhr, statusText, errorThrown){alert(xhr.status);}
});
jQuery Ajax를 메서드로 캡슐화합니다.
var http_util = function (type, url, params, success_handler, error_handler, base_url) {
if(base_url) {
url = base_url + url;
}
var success = arguments[3]?arguments[3]:function(){};
var error = arguments[4]?arguments[4]:function(){};
$.ajax({
type: type,
url: url,
dataType: 'json',
data: params,
success: function (data, textStatus, xhr) {
if(textStatus === 'success'){
success(xhr.code, data); // there returns the status code
}
},
error: function (xhr, error_text, statusText) {
error(xhr.code, xhr); // there returns the status code
}
})
}
용법:
http_util('get', 'http://localhost:8000/user/list/', null, function (status_code, data) {
console(status_code, data)
}, function(status_code, err){
console(status_code, err)
})
JSON API에서 응답 상태 코드와 데이터를 모두 가져 오는 ajax + jQuery v3에 주요 문제가 있습니다. jQuery.ajax는 상태가 성공적인 경우에만 JSON 데이터를 디코딩하고 상태 코드에 따라 콜백 매개 변수의 순서를 바꿉니다. Ugghhh.
이를 해결하는 가장 좋은 방법은 .always
chain 메서드 를 호출하고 약간의 정리를하는 것입니다. 다음은 내 코드입니다.
$.ajax({
...
}).always(function(data, textStatus, xhr) {
var responseCode = null;
if (textStatus === "error") {
// data variable is actually xhr
responseCode = data.status;
if (data.responseText) {
try {
data = JSON.parse(data.responseText);
} catch (e) {
// Ignore
}
}
} else {
responseCode = xhr.status;
}
console.log("Response code", responseCode);
console.log("JSON Data", data);
});
참고URL : https://stackoverflow.com/questions/2955947/how-do-i-get-the-http-status-code-with-jquery
'developer tip' 카테고리의 다른 글
TensorFlow의 기울기 하강 vs Adagrad vs Momentum (0) | 2020.11.19 |
---|---|
내 팀이 sourcesafe를 삭제하고 SVN으로 이동하도록 어떻게 설득합니까? (0) | 2020.11.19 |
문자열에 알파벳 문자가 포함되어 있는지 어떻게 확인할 수 있습니까? (0) | 2020.11.19 |
scrollIntoView 너무 멀리 스크롤 (0) | 2020.11.19 |
Android WebView에서 확대 / 축소 활성화 / 비활성화 (0) | 2020.11.19 |