aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohn Resig <jeresig@gmail.com>2007-08-19 00:48:53 +0000
committerJohn Resig <jeresig@gmail.com>2007-08-19 00:48:53 +0000
commitf64eb21fade249bf0dc9d7ab820eafaaf4a521ad (patch)
tree9c3b1ffb4adb699f64eec1bcbaac57f0d95de8db /src
parent05d401dd8439d8a2137d3fb69a70d671c0d3a69d (diff)
downloadjquery-f64eb21fade249bf0dc9d7ab820eafaaf4a521ad.tar.gz
jquery-f64eb21fade249bf0dc9d7ab820eafaaf4a521ad.zip
We were catching exceptions within the success callback of an Ajax request, then causing an error callback to be called (which is incorrect). (Bug #1441)
Diffstat (limited to 'src')
-rw-r--r--src/ajax/ajax.js61
1 files changed, 31 insertions, 30 deletions
diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js
index 392ea16ef..cf08676c8 100644
--- a/src/ajax/ajax.js
+++ b/src/ajax/ajax.js
@@ -631,40 +631,41 @@ jQuery.extend({
ival = null;
}
- var status;
- try {
- status = isTimeout == "timeout" && "timeout" ||
- !jQuery.httpSuccess( xml ) && "error" ||
- s.ifModified && jQuery.httpNotModified( xml, s.url ) && "notmodified" ||
- "success";
-
- // Make sure that the request was successful or notmodified
- if ( status != "error" && status != "timeout" ) {
- // Cache Last-Modified header, if ifModified mode.
- var modRes;
- try {
- modRes = xml.getResponseHeader("Last-Modified");
- } catch(e) {} // swallow exception thrown by FF if header is not available
-
- if ( s.ifModified && modRes )
- jQuery.lastModified[s.url] = modRes;
-
+ var status = isTimeout == "timeout" && "timeout" ||
+ !jQuery.httpSuccess( xml ) && "error" ||
+ s.ifModified && jQuery.httpNotModified( xml, s.url ) && "notmodified" ||
+ "success";
+
+ if ( status == "success" ) {
+ // Watch for, and catch, XML document parse errors
+ try {
// process the data (runs the xml through httpData regardless of callback)
var data = jQuery.httpData( xml, s.dataType );
+ } catch(e) {
+ status = "parsererror";
+ }
+ }
+
+ // Make sure that the request was successful or notmodified
+ if ( status == "success" ) {
+ // Cache Last-Modified header, if ifModified mode.
+ var modRes;
+ try {
+ modRes = xml.getResponseHeader("Last-Modified");
+ } catch(e) {} // swallow exception thrown by FF if header is not available
- // If a local callback was specified, fire it and pass it the data
- if ( s.success )
- s.success( data, status );
+ if ( s.ifModified && modRes )
+ jQuery.lastModified[s.url] = modRes;
- // Fire the global callback
- if( s.global )
- jQuery.event.trigger( "ajaxSuccess", [xml, s] );
- } else
- jQuery.handleError(s, xml, status);
- } catch(e) {
- status = "parsererror";
- jQuery.handleError(s, xml, status, e);
- }
+ // If a local callback was specified, fire it and pass it the data
+ if ( s.success )
+ s.success( data, status );
+
+ // Fire the global callback
+ if( s.global )
+ jQuery.event.trigger( "ajaxSuccess", [xml, s] );
+ } else
+ jQuery.handleError(s, xml, status);
// The request was completed
if( s.global )