Ajax: Fix for request aborted in ajaxSend

Fixes gh-1775
Close gh-1619
This commit is contained in:
Dan Hart 2014-07-13 18:53:00 +01:00 committed by Timmy Willison
parent 31d58c5cbb
commit 598ed050f6
2 changed files with 23 additions and 0 deletions

View File

@ -627,6 +627,12 @@ jQuery.extend({
if ( fireGlobals ) {
globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
}
// If request was aborted inside ajaxSend, stop there
if ( state === 2 ) {
return jqXHR;
}
// Timeout
if ( s.async && s.timeout > 0 ) {
timeoutTimer = setTimeout(function() {

View File

@ -440,6 +440,23 @@ module( "ajax", {
};
});
ajaxTest( "#15160 - jQuery.ajax() - request manually aborted in ajaxSend", 3, {
setup: function() {
jQuery( document ).on( "ajaxSend", function( e, jqXHR ) {
jqXHR.abort();
});
jQuery( document ).on( "ajaxError ajaxComplete", function( e, jqXHR ) {
equal( jqXHR.statusText, "abort", "jqXHR.statusText equals abort on global ajaxComplete and ajaxError events" );
});
},
url: url("data/name.html"),
error: true,
complete: function() {
ok( true, "complete" );
}
});
ajaxTest( "jQuery.ajax() - context modification", 1, {
url: url("data/name.html"),
context: {},