如果在 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/
不应显示警报。 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 的响应。
来自 jQuery 文档:
在 beforeSend 函数中返回 false 将取消请求。
您在 1.8 中遇到的当前行为是预期行为,如果它没有在 1.7 中取消请求,那将是一个错误。
http://api.jquery.com/jQuery.ajax/
不过,我没有在任何指向修复此"错误"的版本中看到链接的错误。