- try { // Firefox throws an exception when accessing statusText for faulty cross-domain requests
-
- statusText = xhr.statusText;
-
- } catch( e ) {
-
- statusText = ""; // We normalize with Webkit giving an empty statusText
-
- }
-
- // Filter status for non standard behaviours
- // (so many they seem to be the actual "standard")
- status =
- // Opera returns 0 when it should be 304
- // Webkit returns 0 for failing cross-domain no matter the real status
- status === 0 ?
- (
- ! s.crossDomain || statusText ? // Webkit, Firefox: filter out faulty cross-domain requests
- (
- responseHeaders ? // Opera: filter out real aborts #6060
- 304
- :
- 0
- )
- :
- 302 // We assume 302 but could be anything cross-domain related
- )
- :
- (
- status == 1223 ? // IE sometimes returns 1223 when it should be 204 (see #1450)
- 204
- :
- status
- );
-
- // Construct response list
- if ( xml && xml.documentElement /* #4958 */ ) {
- responses.xml = xml;
+ // Construct response list
+ if ( xml && xml.documentElement /* #4958 */ ) {
+ responses.xml = xml;
+ }
+ responses.text = xhr.responseText;
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ if ( status === 1223 ) {
+ status = 204;
+ // Status 0 encompasses several cases
+ } else if ( !status ) {
+ // Cross-domain
+ if ( s.crossDomain ) {
+ if ( !s.statusText ) {
+ // FF, Webkit (other?): There is no status text for errors
+ // 302 is the most generic cross-domain status code
+ // for errors, could be anything really (even a real 0)
+ status = 302;
+ }
+ // All same-domain: for local files, 0 is a success
+ } else if( s.isLocal ) {
+ status = 200;
+ // Opera: this notifies success for all requests
+ // (verified in 11.01). Patch welcome.
+ }
+ // Opera - #6060: sets status as 0 for 304
+ // Patch welcome.
+ }