From ca90ffb332eafc93b8107aeb2afa7473132392fd Mon Sep 17 00:00:00 2001 From: Mike Alup Date: Mon, 25 Jan 2010 18:48:52 -0500 Subject: [PATCH] Provided detailed message for JSON parse errors. Fixes #4435. --- src/ajax.js | 7 +++++-- test/unit/ajax.js | 5 +++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/ajax.js b/src/ajax.js index 4af502a97..d0c675278 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -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 diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 195fa27ca..f6809d539 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -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(); } });