jQuery 1.8 Ajax 请求类型 "HEAD" 在成功时返回空 xhr 对象,但在 1.7 中工作



我似乎在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) {
    ...

最新更新