Jquery $.ajax 상태코드 기타
jquery Ajax call에서 저는 현재 200과 304의 statusCode를 처리하고 있습니다.하지만 "오류"를 정의하여 다시 발생할 수 있는 오류를 파악할 수도 있습니다.
유효성 확인 메시지가 있는 경우 상태 코드 400 - 잘못된 요청을 반환합니다.
그러면 이것은 내가 정의한 statusCode "400" 함수에 들어가기 전에 "Error" 함수에 들어갑니다.그 말은 두 가지 행동이 일어난다는 것을 의미합니다.
이상적으로는 "Error"와 "Success"를 정의하지 않고 "statusCode"만 정의하고 싶지만, 제가 필요로 하는 것은 "Else"를 가지고 있어서 제가 다르게 처리하고 싶은 2-3개의 상태 코드만 선언할 필요가 없습니다.
$.ajax({
type: 'POST',
contentType: "application/json",
url: "../API/Employees.svc/" + EmployeeId + "/Company/" + CompanyId,
data: jsonString,
statusCode: {
200: function () { //Employee_Company saved now updated
hideLoading();
ShowAlertMessage(SaveSuccessful, 2000);
$('#ManageEmployee').dialog('close');
},
304: function () { //Nothing to save to Employee_Company
hideLoading();
$('#ManageEmployee').dialog('close');
if (NothingToChange_Employee) {
ShowAlertMessage(NothingToUpdate, 2000);
} else {
ShowAlertMessage(SaveSuccessful, 2000);
}
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
AjaxError(XMLHttpRequest, textStatus, errorThrown);
}
});
"완료" 이벤트는 항상 실행되므로, 여기서 상태 코드를 가져와 성공 및 오류 기능을 무시할 수 있습니다.
complete: function(e, xhr, settings){
if(e.status === 200){
}else if(e.status === 304){
}else{
}
}
이것이 제가 사용하는 것입니다.
error: function (xhr, textStatus, errorThrown) {
switch (xhr.status) {
case 401:
// handle unauthorized
break;
default:
AjaxError(xhr, textStatus, errorThrown);
break;
}
}
jQuery AJAX 응답complete
,success
,error
더 이상 사용되지 않습니다.더 최신 버전의 최신 버전.done
,.fail
,.always
대신 약속합니다.
성공시.always
의 서명이 있습니다..done
실패하면 그것은 그것의 특징적인 변화입니다..fail
사용textStatus
올바른 변수를 잡고 본문 내용을 반환할 수 있습니다.
var jqxhr = $.ajax( {
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
dataType: 'json',
} )
.done(function( data, textStatus, jqXHR ) {
alert( "success" );
})
.fail(function( jqXHR, textStatus, errorThrown ) {
alert( "error" );
})
.always(function( data_jqXHR, textStatus, jqXHR_errorThrown ) {
if (textStatus === 'success') {
var jqXHR = jqXHR_errorThrown;
} else {
var jqXHR = data_jqXHR;
}
var data = jqXHR.responseJSON;
switch (jqXHR.status) {
case 200:
case 201:
case 401:
default:
console.log(data);
break;
}
});
jqxhr.always(function() {
alert( "second complete" );
});
당신의 초기 논리와 유사한 접근 방식을 유지하기 위해 statusCode 객체를 계속 전달하겠습니다.그러나 "else"가 4xx 또는 5xx 유형 오류 코드의 영역에 속한다는 것은 여전히 알고 있습니다.
그래서 나는 당신의 원래 코드를 다음으로 업데이트할 것입니다.
var statusCodeResponses = {
200: function () { //Employee_Company saved now updated
hideLoading();
ShowAlertMessage(SaveSuccessful, 2000);
$('#ManageEmployee').dialog('close');
},
304: function () { //Nothing to save to Employee_Company
hideLoading();
$('#ManageEmployee').dialog('close');
if (NothingToChange_Employee) {
ShowAlertMessage(NothingToUpdate, 2000);
} else {
ShowAlertMessage(SaveSuccessful, 2000);
}
}
};
var genericElseFunction = function(response){
// do whatever other action you wanted to take
};
for(var badResponseCode=400; badResponseCode<=599; badResponseCode++){
statusCodeResponses[badResponseCode] = genericElseFunction;
}
$.ajax({
type: 'POST',
contentType: "application/json",
url: "../API/Employees.svc/" + EmployeeId + "/Company/" + CompanyId,
data: jsonString,
statusCode: statusCodeResponses,
error: function (XMLHttpRequest, textStatus, errorThrown) {
AjaxError(XMLHttpRequest, textStatus, errorThrown);
}
});
언급URL : https://stackoverflow.com/questions/10042040/jquery-ajax-statuscode-else
'programing' 카테고리의 다른 글
사용자가 AJAX 요청이 끝나기 전에 브라우저를 종료하거나 페이지를 변경할 경우 발생하는 현상 (0) | 2023.08.18 |
---|---|
Docker 파일에서 환경 변수 값 가져오기 (0) | 2023.08.18 |
SQL Grant on - 여러 사용자용 (0) | 2023.08.18 |
R: 인수가 여러 형식 인수와 일치합니다. (0) | 2023.08.18 |
다른 클래스를 확장하는 클래스의 Lombok @builder (0) | 2023.08.18 |