0

如果您在 1.7 中执行此代码,则会出现警报,而 1.8 则不会:

$.when(
$.ajax({
    url: "whatever",
    dataType: "json",
    beforeSend: function(jqXHR, settings) {
        return false;
    }
})).done(function(a1) {
    alert("this appears in 1.7 but not in 1.8!");
});​

我无法在 jQuery 文档、1.8 发行说明或提到此问题的 jQuery 错误跟踪器中找到任何内容。我想知道哪种行为是正确的,以及是否有人可以提供错误票证或 Github 提交的链接。

这是这个问题的小提琴:

http://jsfiddle.net/zJddg/

4

2 回答 2

2

来自 jQuery 文档:

在 beforeSend 函数中返回 false 将取消请求。

您在 1.8 中遇到的当前行为是预期的行为,如果它没有在 1.7 中取消请求,那将是一个错误。

http://api.jquery.com/jQuery.ajax/

不过,我在任何版本中都没有看到指向修复此“错误”的错误。

于 2012-12-19T20:43:27.203 回答
2

不应出现警报。http://api.jquery.com/jQuery.ajax/说:

特别是,在对象上调用 .abort() 将在请求完成之前停止请求。

在代码中:

    // Allow custom headers/mimetypes and early abort
    if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
            // Abort if not done already and return
            return jqXHR.abort();

    }

我相信这是对错误 #8193和可能的错误 #10944的回应。

于 2012-12-19T20:48:57.247 回答