JQuery ajax文档说您可以通过以下方式访问 XMLHttpRequest:
var jqxhr = $.ajax({
xhr: function() {
var xhrNativeObject = new window.XMLHttpRequest();
xhrNativeObject.upload.addEventListener("progress", function(event) {
// progress bar
}, false);
return xhrNativeObject;
},
url: url,
type: "POST",
data: formdata,
processData: false,
contentType: false
}).then(function(response) {
...
});
jqxhr.abort(); // this is not working!!!
当我在控制台中打印 jqxhr 时,这对我不起作用:
Object {url: "http://someurl", isLocal: false, global: true, type: "POST", contentType: false…}
当我执行以下操作时,我只会得到 XMLHttpRequest:
var myXHR;
$.ajax({
xhr: function() {
myXHR = new window.XMLHttpRequest();
}
... });
当我在控制台上打印 myXHR 时,我得到:
XMLHttpRequest {open: function, setRequestHeader: function, send: function, abort: function, getAllResponseHeaders: function…}
这是对的。
JQuery 文档说我可以对 jqxhr 对象执行 abort() 。什么时候做:
jqxhr.abort();
我收到以下控制台错误:
Uncaught TypeError: Object #<Object> has no method 'abort'
当我做
myXHR.abort();
一切正常。
为什么 abort() 不适用于 jqxhr 对象?
编辑:使用 JQuery 1.8.3
编辑:我创建了一个示例: http: //jsfiddle.net/9HmQd/ 事实证明,当我添加 then() 块时,中止是未定义的。