繁体   English   中英

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

[英]jQuery 1.8: Ajax beforeSend prevents deferred.done() from executing

如果您在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/

从jQuery文档中:

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

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

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

我看不到任何发行版中链接的错误,尽管该错误指向修复此“错误”。

该警报不应出现。 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();

    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM