Ste*_*eve 23 javascript ajax jquery http-status-codes
在jquery Ajax调用中,我正在处理200和304的statusCode.但我也定义了"错误""捕获可能返回的任何错误.
如果存在相关的验证消息,则返回状态代码400 - 错误请求.
然后在进入我定义的statusCode"400"函数之前进入"错误"函数.这意味着两个动作发生.
理想情况下,我不想定义"错误"和"成功",只定义"statusCode"但我需要的是有一个"Else",这样我就不需要声明每个只存在2-3个的statusCode想要区别对待.
$.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);
}
});
Run Code Online (Sandbox Code Playgroud)
Nic*_*tti 28
由于"完整"事件总是被触发,您可以从那里简单地获取状态代码并忽略成功和错误函数
complete: function(e, xhr, settings){
if(e.status === 200){
}else if(e.status === 304){
}else{
}
}
Run Code Online (Sandbox Code Playgroud)
Mux*_*uxa 10
这是我使用的:
error: function (xhr, textStatus, errorThrown) {
switch (xhr.status) {
case 401:
// handle unauthorized
break;
default:
AjaxError(xhr, textStatus, errorThrown);
break;
}
}
Run Code Online (Sandbox Code Playgroud)
jQuery AJAX 响应complete、success、error已被弃用。使用.done, .fail, .alwayspromise 代替更新的版本。
成功时.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" );
});
Run Code Online (Sandbox Code Playgroud)