From 0a6e1c4b191f177fce2dac5fd3a17b76f853fd26 Mon Sep 17 00:00:00 2001 From: Richard Gibson Date: Fri, 23 Oct 2015 11:35:11 -0400 Subject: [PATCH] Ajax: Catch synchronous readystatechange events Fixes gh-2673 Ref trac-14683 --- src/ajax/xhr.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/ajax/xhr.js b/src/ajax/xhr.js index 313f24a04..b62417138 100644 --- a/src/ajax/xhr.js +++ b/src/ajax/xhr.js @@ -105,11 +105,6 @@ if ( xhrSupported ) { } } - // Do send the request - // This may raise an exception which is actually - // handled in jQuery.ajax (so no try/catch here) - xhr.send( ( options.hasContent && options.data ) || null ); - // Listener callback = function( _, isAbort ) { var status, statusText, responses; @@ -168,14 +163,21 @@ if ( xhrSupported ) { } }; + // Do send the request + // `xhr.send` may raise an exception, but it will be + // handled in jQuery.ajax (so no try/catch here) if ( !options.async ) { - // if we're in sync mode we fire the callback + xhr.send( ( options.hasContent && options.data ) || null ); + + // If we're in sync mode we fire the callback callback(); } else { // Add to the list of active xhr callbacks xhr.onreadystatechange = callback; + + xhr.send( ( options.hasContent && options.data ) || null ); } }, -- 2.39.5