2011-02-27 97 views
1

我一直得到一個JSON解析器錯誤以下數據:JSON解析器錯誤

[{"data":"Aerospace and Defense"},{"data":"Agriculture"},{"data":"Business Services"},{"data":"Chemicals"},{"data":"Construction"},{"data":"Consumer Goods and Services"},{"data":"Education"},{"data":"Electronics"},{"data":"Energy and Utilities"},{"data":"Environmental Services and Equipment"},{"data":"Financial Services"},{"data":"Food and Beverage"},{"data":"Healthcare Goods and Services"},{"data":"Industrial Goods and Services"},{"data":"Information Technology"},{"data":"Metals and Mining"},{"data":"Security Products and Services"},{"data":"Software"},{"data":"Telecom"},{"data":"Tranportation and Storage"}] 

誰能請找出錯誤是什麼?我原本使用「航空航天&國防」,並認爲特殊性質可能是問題。但它看起來不像。

我使用ASP.NET MVC JSONResult將它傳回給jQuery。 FireFox和IE顯示正確創建的數據,但jquery解析器拋出錯誤。我聽說在新的jQuery中解析器已經有了很大的修改。

任何幫助將不勝感激。

+0

是誤差'無效JSON'?或者是其他東西?什麼版本的jQuery?你在調用'$ .parseJSON'嗎?你能展示一些代碼嗎? – user113716 2011-02-27 02:31:20

+0

「新版本」是指你的意思是哪個版本?另外,你使用什麼瀏覽器? – rsp 2011-02-27 02:45:31

+3

只是把它在那裏,jQuery的解析器不喜歡看到的NaN – diachedelic 2012-11-28 23:59:01

回答

0

非常感謝您的回覆驚人。這是我進一步研究後發現的。 我正在使用jquery1.5,結果發生了一些非常有趣的事情。我在jsTree上有一個單獨的帖子,因爲我原本以爲是JSTree給了我一個錯誤,但事實證明這絕對不是jsTree,但可能與jQuery相關。

由於該項目截止日期的性質,我沒有能夠研究整個問題,但我已經明確找到了解決方法。希望這有助於:

jsTree JSON with MVC

3

對我來說沒問題。請參閱DEMO

在一個實際的jQuery AJAX請求的響應使用此JSON字符串另一個演示:

我實在看不出如何jQuery JSON解析器可以被顯着修改。 這是jQuery的1.5.1 actual source of jQuery.parseJSON

parseJSON: function(data) { 
    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 
    if (rvalidchars.test(data.replace(rvalidescape, "@") 
     .replace(rvalidtokens, "]") 
     .replace(rvalidbraces, ""))) { 

     // Try to use the native JSON parser first 
     return window.JSON && window.JSON.parse ? 
      window.JSON.parse(data) : 
      (new Function("return " + data))(); 

    } else { 
     jQuery.error("Invalid JSON: " + data); 
    } 
}, 

只有一個地方,可能會帶來一些問題,那就是the JSON regexp

// JSON RegExp 
rvalidchars = /^[\],:{}\s]*$/, 
rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, 
rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, 
rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, 

,但它在2010年9月爲last modified約翰Resig。

無論如何,您使用的是哪個版本?

0

也許你需要在開始和JSON結束單引號,應該是字符串,因爲你分析它

1

您正在使用什麼版本的jQuery?我在使用VS 2010中默認的ASP.NET MVC模板時遇到了同樣的問題,其中包括本地副本jQuery 1.5.1。

即使我返回的JSON看起來很好並驗證,我仍然從jQuery $ ajax函數中獲得'parserrror'。最終,在絕望中,我改變了jQuery 1.6,它運行良好。所以我懷疑1.5.1中有一個bug。

+0

我有同樣的問題,我的jQuery是jQuery的1.5.2我與jQuery-1.6.1取代它和它的工作GR8 – 2012-09-19 13:59:36

0

將對象封裝在花括號中爲我解決了這個問題。否[]和否「」。

0

的原因之一,我得到這個錯誤是因爲我節省\ -N(即「這是我的筆記。\ n它會告訴你的東西」)在我的數據庫......我得到這個從一個文本輸入。當我試圖發送帶有該轉義字符的json字符串時,它拋出了這個錯誤。