From: Colin Snover Date: Sat, 6 Nov 2010 18:52:30 +0000 (-0500) Subject: Ensure that AJAX requests are actually aborted in all browsers. Fix #7422. X-Git-Tag: 1.4.4rc3~9^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e57b73a0ac6f8fd0cdbbe7d43f1c7e198f475337;p=jquery.git Ensure that AJAX requests are actually aborted in all browsers. Fix #7422. --- diff --git a/src/ajax.js b/src/ajax.js index ff293da6a..690bcb53b 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -463,10 +463,11 @@ jQuery.extend({ try { var oldAbort = xhr.abort; xhr.abort = function() { - // xhr.abort in IE7 is not a native JS function - // and does not have a call property - if ( xhr && oldAbort.call ) { - oldAbort.call( xhr ); + if ( xhr ) { + // oldAbort has no call property in IE7 so + // just do it this way, which works in all + // browsers + Function.prototype.call.call( oldAbort, xhr ); } onreadystatechange( "abort" ); diff --git a/test/unit/ajax.js b/test/unit/ajax.js index b2e51fbcf..4ce14c24c 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -137,7 +137,7 @@ test(".load()) - 404 error callbacks", function() { }); test("jQuery.ajax() - abort", function() { - expect( 6 ); + expect( 8 ); stop(); jQuery('#foo').ajaxStart(function(){ @@ -157,7 +157,10 @@ test("jQuery.ajax() - abort", function() { complete: function(){ ok(true, "complete"); } }); + equals( xhr.readyState, 1, "XHR readyState indicates successful dispatch" ); + xhr.abort(); + equals( xhr.readyState, 0, "XHR readyState indicates successful abortion" ); }); test("Ajax events with context", function() {