jquery ajax是个很常用接口,而在请求时候,可能存在响应401的情况(身份认证过期或未登录),比较容易出现在混合应用上,如何进行身份认证,重发失败请求,还是值得注意的。
ajax请求有两种方式
1. 回调
最常写的方式,成功失败处理以回调方式传入。
$.ajax({
ajax参数…
success : xxxxxx
error: xxxxxx
});
ajax调用本身返回就是一个Deferred对象,成功失败回调不以参数传入。
应对处理401的方式也是有两种。
401处理的两种方式
**1. 回调
这种方式的处理比较简单,在失败回调里面判断401,如果是则进行身份认证,成功重发请求。
function getXXXX(type, url, data, success, error){ $.ajax({ ajax参数… success : xxxxxx error : function(xhr,textStatus,errorThrown){
if (xhr.status == 401) {
// 刷新身份认证方法
(function(){
getXXXX(type, url, data, success, error);
});
} else{
// 调用外部的error
error && error(xhr,textStatus,errorThrown);
}
}
});
}
ajax error的详细信息查看
$.ajax({
url: '/cxz/add',
success: function (data) {
alert(data);
},
error: function (xhr, textStatus, errorThrown) {
/*错误信息处理*/
alert("进入error---");
alert("状态码:"+xhr.status);
alert("状态:"+xhr.readyState);//当前状态,0-未初始化,1-正在载入,2-已经载入,3-数据进行交互,4-完成。
alert("错误信息:"+xhr.statusText );
alert("返回响应信息:"+xhr.responseText );//这里是详细的信息
alert("请求状态:"+textStatus);
alert(errorThrown);
alert("请求失败");
}
});