我似乎在jQuery 1.8.3中发现了一个未记录的重大更改。
在将页面从 jQuery 1.7 升级到 1.8.3 时,我们的一个 ajax 调用类型为"HEAD"停止工作。
调试后,会触发成功回调,但是当我使用谷歌 CDN 在 jQuery 1.8.3 中运行页面时,参数"xhr"为空。
如果我切换回 1.7,xhr 对象是完全可操作的,而不是空的。
我已经在谷歌和jQuery网站上搜索了1.8.*中的重大更改,但找不到任何内容。我需要升级它,因为我需要使用的另一个库需要最新的 jQuery,所以我现在处于岩石和困难之间。
代码如下:
$.ajax({
type: "HEAD",
async: false,
cache: false,
url: pth + b,
error: function (xhr) {
// always succeeds
},
success: function (xhr) {
// in jQuery 1.7.0 ONLY xhr is a non-null object - 1.8.3/1.9.0 receive a null object as a parameter
c = xhr.getResponseHeader('x-amz-meta-mix');
if (c == null) c = b;
}
});
谢谢!
PS-我应该补充一点,在Fiddler中,响应始终为200,并且我正在寻找的信息始终存在。问题是,如果我不使用 jQuery 1.7.0 来支持 1.8.3 或 1.9.0,则 xhr 对象为空
jQuery似乎改变了success
回调的格式。在 1.8 及更高版本中,它是:
类型: 函数(对象数据, 字符串文本状态, jqXHR jqXHR )
jqXHR
现在是第三个参数,而不是第一个参数,因此请将success
处理程序更改为:
success: function (data, status, xhr) {
...