jQuery ajax handle 401 Unauthorized
我使用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 });
我尝试了所有函数错误,成功,完成和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和解析错误时都进入错误function,因此我忽略了错误中的状态200。
好吧,看来你正在使用jsonp,我认为它可能是jsonp的限制。 看一看。
看起来在最后一篇文章中有一个解决方案。 希望这可以帮助!