X-Git-Url: http://git.asbjorn.it/?a=blobdiff_plain;f=src%2Fajax%2Fxhr.js;h=47cfc6c3724349ced9102561db9283225fb5da82;hb=cb85da7b62e74e7339ed652ade209aaffbd0c15b;hp=5629dcd60b8fd671dce1fd5e9fbcd2b2960d3c42;hpb=dd5bf421225d23bc8732a92ea82049859c0cd57a;p=jquery.git diff --git a/src/ajax/xhr.js b/src/ajax/xhr.js index 5629dcd..47cfc6c 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 ) { @@ -159,12 +156,14 @@ if ( jQuery.support.ajax ) { statusText = ""; } - // Filter status for non standard behaviours + // Filter status for non standard behaviors status = + // Most browsers return 0 when it should be 200 for local files // Opera returns 0 when it should be 304 // Webkit returns 0 for failing cross-domain no matter the real status - status === 0 ? - ( + !status ? + // All: for local files, 0 is a success + ( location.protocol === "file:" ? 200 : ( // Webkit, Firefox: filter out faulty cross-domain requests !s.crossDomain || statusText ? ( @@ -175,7 +174,7 @@ if ( jQuery.support.ajax ) { ) : // We assume 302 but could be anything cross-domain related 302 - ) : + ) ) : ( // IE sometimes returns 1223 when it should be 204 (see #1450) status == 1223 ?