Javascript jQuery 1.8:Ajax beforeSend阻止deferred.done()执行
如果在1.7中执行此代码,则会出现警报,而在1.8中则不会: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
$.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-是变更集。