兩個問題解決:
- 添加引號的「OK」,使之成爲法律JavaScript字符串。
- 字符串周圍添加括號發送給eval這樣
eval("(" + jsonString + ")")';
之前,此:
{status:OK,addresses:[0,1,2,3,4,5]}
就必須改變這一點:
{status:"OK",addresses:[0,1,2,3,4,5]}
是有效的JavaScript(注意「OK」左邊的引號)。
它應該是這是有效的JSON(周圍的按鍵報價太):
{"status":"OK", "addresses":[0,1,2,3,4,5]}
確定全部由自己也不是沒有它周圍的報價已知一段JavaScript代碼,使之成爲一個JavaScript字符串。在未來,你可以測試自己在一個小的測試牀,看到的錯誤是在你最喜歡的JavaScript調試器是什麼:
http://jsfiddle.net/jfriend00/FcSKR/
var jsonString = '{"status":"OK","addresses":[0,1,2,3,4,5]}';
var jsonObj = eval("(" + jsonString + ")");
alert("success");
如果仍然得到一個錯誤與{"status":"OK","addresses":[0,1,2,3,4,5]}
和括號的加入在發送到eval之前,那麼您的數據不是您認爲的數據,您需要進行一些調試以確切瞭解響應中的內容(查看調試器中的值,將值放入警報等。 )。響應中可能還有其他一些東西,你不知道會在那裏。
注意:在某些情況下,像JSON.parse()
這樣的JSON解析器和合法的JSON字符串比使用Javascript的eval()
更安全,可以是任何東西。
這不是一個JSON字符串,它甚至不是有效的JavaScript對象字面值。 n是JSON,我期望'eval'來處理它(但應避免使用'eval',去獲取json2.js)。由於數據中沒有'&',因此它必須來自您沒有提供的代碼。由於我們看不到,我們無法告訴您如何解決這個問題。 – Quentin
所以我確認當JSon從請求收到時,所有的「被替換爲" ......這可能是問題嗎? –
是的!解析器期望JSON不是HTML編碼的JSON! – Quentin