我正在使用 jQuery ajax 调用第三方网页。根据他们的页面,如果登录成功,他们向我发送状态代码 200,如果登录不成功,他们向我发送状态代码 401。这是我的 jquery 代码示例。此代码在 IE 上运行良好,但在 Chrome 或 Firefox 上不起作用。可能是什么问题?
$.ajax({
type: 'GET',
url: hostURL + 'j_teo_security_check?callback=?',
dataType: 'json',
data: ({j_username : $("#inp_user_name").val(), j_password: $("#inp_user_pwd").val()}),
statusCode: {
401:function() { alert("401"); },
404:function() { alert("404"); },
200:function() { alert("200"); },
201:function() { alert("201"); },
202:function() { alert("202"); }
},
complete: function(httpObj, textStatus){
alert(httpObj.status);
},
error: function(){
alert("error");
},
async: false
});
我尝试了所有的函数 error、success、complete 和 statusCode。它们都不处理 401 错误。
我可以按如下方式修复它。
$(document).ready(function(){
$("#cmdLogin").click(function(){
var request = $.ajax({
url : hostURL + 'j_teo_security_check',
data: ({j_username : $("#inp_user_name").val(), j_password: $("#inp_user_pwd").val()}),
dataType : "jsonp",
timeout : 5000
});
request.success(function() {
loginSuccess();
});
request.error(function(httpObj, textStatus) {
if(httpObj.status==200)
loginSuccess();
else
loginFail();
});
});
})
我所做的是添加超时,因为 401 错误再也没有回来。由于即使状态代码为 200 且解析错误,它也会进入错误函数,因此我让它忽略错误内的状态 200。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)