From 94d925cd4615d88532737f3cd106ecd1f8c34bc3 Mon Sep 17 00:00:00 2001 From: jeresig Date: Sat, 13 Feb 2010 02:14:23 -0500 Subject: [PATCH] Make sure leading whitespace is trimmed for parseJSON. Fixes #6031. --- src/core.js | 3 +++ test/unit/core.js | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/core.js b/src/core.js index 02d8269d..9fa311d5 100644 --- a/src/core.js +++ b/src/core.js @@ -480,6 +480,9 @@ jQuery.extend({ if ( typeof data !== "string" || !data ) { return null; } + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); // Make sure the incoming data is actual JSON // Logic borrowed from http://json.org/json2.js diff --git a/test/unit/core.js b/test/unit/core.js index 4576ab8e..d8aba16d 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -807,7 +807,7 @@ test("jQuery.proxy", function(){ }); test("jQuery.parseJSON", function(){ - expect(7); + expect(8); equals( jQuery.parseJSON(), null, "Nothing in, null out." ); equals( jQuery.parseJSON( null ), null, "Nothing in, null out." ); @@ -815,6 +815,8 @@ test("jQuery.parseJSON", function(){ same( jQuery.parseJSON("{}"), {}, "Plain object parsing." ); same( jQuery.parseJSON('{"test":1}'), {"test":1}, "Plain object parsing." ); + + same( jQuery.parseJSON('\n{"test":1}'), {"test":1}, "Make sure leading whitespaces are handled." ); try { jQuery.parseJSON("{a:1}"); @@ -829,4 +831,4 @@ test("jQuery.parseJSON", function(){ } catch( e ) { ok( true, "Test malformed JSON string." ); } -}); \ No newline at end of file +});