diff options
author | jaubourg <j@ubourg.net> | 2011-01-25 16:08:19 +0100 |
---|---|---|
committer | jaubourg <j@ubourg.net> | 2011-01-25 16:08:19 +0100 |
commit | 5ca8f0617f5c94495380ff783452a52eab706d39 (patch) | |
tree | a369935e3c91af39c4e34949b25e001b0dd8f987 /src | |
parent | 8d050558d3dc2c0abd0bde4bc9d03bfb66974689 (diff) | |
download | jquery-5ca8f0617f5c94495380ff783452a52eab706d39.tar.gz jquery-5ca8f0617f5c94495380ff783452a52eab706d39.zip |
Reworks how values of parameters passed to error callbacks are determined. Fixes #8050.
Diffstat (limited to 'src')
-rw-r--r-- | src/ajax.js | 22 | ||||
-rw-r--r-- | src/ajax/xhr.js | 9 |
2 files changed, 19 insertions, 12 deletions
diff --git a/src/ajax.js b/src/ajax.js index 89d60e1d0..8f8bc60ab 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -400,8 +400,9 @@ jQuery.extend({ // Cancel the request abort: function( statusText ) { + statusText = statusText || "abort"; if ( transport ) { - transport.abort( statusText || "abort" ); + transport.abort( statusText ); } done( 0, statusText ); return this; @@ -438,7 +439,7 @@ jQuery.extend({ var isSuccess, success, - error = ( statusText = statusText || "error" ), + error, response = responses ? ajaxHandleResponses( s, jXHR, responses ) : undefined, lastModified, etag; @@ -476,6 +477,16 @@ jQuery.extend({ error = "" + e; } } + } else { + // We extract error from statusText + // then normalize statusText and status for non-aborts + error = statusText; + if( status ) { + statusText = "error"; + if ( status < 0 ) { + status = 0; + } + } } // Set data for the fake xhr object @@ -634,7 +645,7 @@ jQuery.extend({ // If no transport, we auto-abort if ( !transport ) { - done( 0, "notransport" ); + done( -1, "No Transport" ); } else { // Set state as sending state = jXHR.readyState = 1; @@ -653,9 +664,8 @@ jQuery.extend({ transport.send( requestHeaders, done ); } catch (e) { // Propagate exception as error if not done - if ( status === 1 ) { - done( 0, "error", "" + e ); - jXHR = false; + if ( status < 2 ) { + done( -1, "" + e ); // Simply rethrow otherwise } else { jQuery.error( e ); diff --git a/src/ajax/xhr.js b/src/ajax/xhr.js index 5629dcd60..b82064239 100644 --- a/src/ajax/xhr.js +++ b/src/ajax/xhr.js @@ -108,12 +108,9 @@ if ( jQuery.support.ajax ) { } catch( _ ) {} // Do send the request - try { - xhr.send( ( s.hasContent && s.data ) || null ); - } catch( e ) { - complete( 0, "error", "" + e ); - return; - } + // This may raise an exception which is actually + // handled in jQuery.ajax (so no try/catch here) + xhr.send( ( s.hasContent && s.data ) || null ); // Listener callback = function( _, isAbort ) { |