【发布时间】:2011-10-28 16:00:23
【问题描述】:
我有一个服务器,它从同一个 url 返回 HTTP 状态代码 200、201 和 202。在 Chrome 中,我已通过网络调试面板确认状态代码是我所期望的(即 200、201 或 202)。我依靠该状态码来确定下一步。
我希望 jQuery(版本 1.5.2)AJAX 的回调请求将 jqxhr.status 设置为服务器发送的状态代码。但是状态码始终是 200,即使服务器发送的代码是 201 或 202。
换句话说,无论服务器发送什么,以下代码都会打印Code: 200。
$.get(url, {}, function (data, textStatus, xhr ) {
alert("Code: " + xhr.status);
});
为什么会发生这种情况,更重要的是,如何在 jQuery AJAX 回调中为 $.get 或 $.ajax 获取实际状态代码?
感谢您的阅读。
【问题讨论】:
-
您是否有可能使用 JSONP 或跨域
GET请求? -
也许这会有所帮助:bugs.jquery.com/ticket/8211
-
KrisIvanov:没有 JSONP 或跨域。这是通常的请求。
-
查看this bug report 看看是否相关;想知道如果您使用
$.ajax并在代码处理程序中报告状态和成功会发生什么。 -
Bug 8211 似乎只是切线相关 - 即 jQuery 不能正确处理
statusCode和success处理程序。这似乎是状态码的一个奇怪的截断 - 我认为会有一些迹象,例如github.com/jquery/jquery/blob/master/src/ajax.js,但我没有看到任何明显将jqXHR.status从 201/202 更改为 200 的东西。