我使用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 });
解决方法
我可以修复它如下.
$(document).ready(function(){ $("#cmdLogin").click(function(){ var request = $.ajax({ url : hostURL + 'j_teo_security_check',dataType : "jsonp",timeout : 5000 }); request.success(function() { loginSuccess(); }); request.error(function(httpObj,textStatus) { if(httpObj.status==200) loginSuccess(); else loginFail(); }); }); })
我做的是添加超时,因为401错误从来没有回来.由于即使使用状态代码200和解析错误也会进行错误功能,因此使其忽略错误内的状态200.