我如何获得jQuery的HTTP状态码?

我想检查一个页面是否返回状态码401,这可能吗?

这是我的尝试,但它只返回0。

$.ajax({ url: "http://my-ip/test/test.php", data: {}, complete: function(xhr, statusText){ alert(xhr.status); } }); 

这可能与jQuery $.ajax()方法

 $.ajax(serverUrl, { type: OutageViewModel.Id() == 0 ? "POST" : "PUT", data: dataToSave, statusCode: { 200: function (response) { alert('1'); AfterSavedAll(); }, 201: function (response) { alert('1'); AfterSavedAll(); }, 400: function (response) { alert('1'); bootbox.alert('<span style="color:Red;">Error While Saving Outage Entry Please Check</span>', function () { }); }, 404: function (response) { alert('1'); bootbox.alert('<span style="color:Red;">Error While Saving Outage Entry Please Check</span>', function () { }); } }, success: function () { alert('1'); }, }); 

第三个参数是XMLHttpRequest对象,所以你可以做任何你想要的。

 $.ajax({ url : 'http://example.com', type : 'post', data : 'a=b' }).done(function(data, statusText, xhr){ var status = xhr.status; //200 var head = xhr.getAllResponseHeaders(); //Detail header info }); 

使用错误callback。

例如:

 jQuery.ajax({'url': '/this_is_not_found', data: {}, error: function(xhr, status) { alert(xhr.status); } }); 

将提醒404

我想你也应该实现$ .ajax方法的错误函数。

错误(XMLHttpRequest,textStatus,errorThrown)函数

如果请求失败,则调用该函数。 该函数传递三个参数:XMLHttpRequest对象,一个描述发生的错误types的string,以及一个可选的exception对象(如果发生的话)。 第二个参数(除了null)的可能值是“超时”,“错误”,“未修改”和“parsing错误”。

 $.ajax({ url: "http://my-ip/test/test.php", data: {}, complete: function(xhr, statusText){ alert(xhr.status); } error: function(xhr, statusText, err){ alert("Error:" + xhr.status); } }); 
 $.ajax({ url: "http://my-ip/test/test.php", data: {}, error: function(xhr, statusText, errorThrown){alert(xhr.status);} }); 

我发现这个解决scheme可以简单地使用状态码检查服务器响应代码

例如:

 $.ajax({ type : "POST", url : "/package/callApi/createUser", data : JSON.stringify(data), contentType: "application/json; charset=UTF-8", success: function (response) { alert("Account created"); }, statusCode: { 403: function() { // Only if your server returns a 403 status code can it come in this block. :-) alert("Username already exist"); } }, error: function (e) { alert("Server error - " + e); } });