Provided detailed message for JSON parse errors. Fixes #4435.
authorMike Alup <malsup@gmail.com>
Mon, 25 Jan 2010 23:48:52 +0000 (18:48 -0500)
committerjeresig <jeresig@gmail.com>
Mon, 25 Jan 2010 23:48:52 +0000 (18:48 -0500)
src/ajax.js
test/unit/ajax.js

index 4af502a..d0c6752 100644 (file)
@@ -417,13 +417,16 @@ jQuery.extend({
                                                        "notmodified" :
                                                        "success";
 
+                               var errMsg;
+
                                if ( status === "success" ) {
                                        // Watch for, and catch, XML document parse errors
                                        try {
                                                // process the data (runs the xml through httpData regardless of callback)
                                                data = jQuery.httpData( xhr, s.dataType, s );
-                                       } catch(e) {
+                                       } catch(err) {
                                                status = "parsererror";
+                                               errMsg = err;
                                        }
                                }
 
@@ -434,7 +437,7 @@ jQuery.extend({
                                                success();
                                        }
                                } else {
-                                       jQuery.handleError(s, xhr, status);
+                                       jQuery.handleError(s, xhr, status, errMsg);
                                }
 
                                // Fire the complete handlers
index 195fa27..f6809d5 100644 (file)
@@ -892,7 +892,7 @@ test("jQuery.ajax() - script, Remote with scheme-less URL", function() {
 });
 
 test("jQuery.ajax() - malformed JSON", function() {
-       expect(1);
+       expect(2);
 
        stop();
 
@@ -903,8 +903,9 @@ test("jQuery.ajax() - malformed JSON", function() {
                        ok( false, "Success." );
                        start();
                },
-               error: function(xhr, msg) {
+               error: function(xhr, msg, detailedMsg) {
                        equals( "parsererror", msg, "A parse error occurred." );
+                       ok( /^Invalid JSON/.test(detailedMsg), "Detailed parsererror message provided" );
                        start();
                }
        });