我打电话给使用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错误。
发布于 2012-04-23 09:21:31
我可以把它改成bellow。
$(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。
发布于 2012-04-22 20:36:36
好的,看起来您使用的是jsonp,我认为这可能是jsonp的一个限制。瞧一瞧。
看起来在上一篇文章中有一个解决方案。希望这能有所帮助!
https://stackoverflow.com/questions/10267683
复制相似问题