Javascript jQuery 1.8:Ajax beforeSend阻止deferred.done()执行

Javascript jQuery 1.8:Ajax beforeSend阻止deferred.done()执行,javascript,jquery,jquery-deferred,jquery-1.8,Javascript,Jquery,Jquery Deferred,Jquery 1.8,如果在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!"); });​ 我在jQuer

如果在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 bug跟踪器中找不到任何提到这个问题的内容。我想知道哪种行为是正确的,是否有人可以提供一个链接到bug通知单或Github提交

以下是关于这个问题的提琴:


来自jQuery文档:

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

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


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

来自jQuery文档:

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

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


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

此警报不应出现。说:

特别是,对对象调用.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();

    }

我相信这是对的,也可能是。警报不应该出现。说:

特别是,对对象调用.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();

    }

我相信这是对的,也可能是。

是的,我在文档中看到了,但是“取消”请求是否意味着不应该调用“完成”回调?这确实是我问题的核心。在以前的版本中,行为是不同的。我认为是的,因为它从未结束。没有要返回的数据。请求从未发送过,因此从未成功。是的,我在文档中看到过,但是“取消”请求是否意味着不应调用“完成”回调?这确实是我问题的核心。在以前的版本中,行为是不同的。我认为是的,因为它从未结束。没有要返回的数据。请求从未发送,因此从未成功。+1肯定
bug#10944
,尽管我想知道为什么变更集不再存在。@KevinB-是变更集。+1肯定
bug#10944
,尽管我想知道为什么变更集不再存在。@KevinB-是变更集。