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();
すべてが機能しています。
jqxhr オブジェクトで abort() が機能しないのはなぜですか?
編集:JQuery 1.8.3の使用
編集: 例を作成しました: http://jsfiddle.net/9HmQd/ then() ブロックを追加すると、中止が未定義であることがわかりました。