aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ajax.js22
-rw-r--r--src/ajax/xhr.js9
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 ) {