2011-09-04 87 views
0

我正在使用AJAX請求。這是我第一次使用JSON或它的任何方法。 ajax實用程序將onreadystatechange回調的參數作爲我請求的文件的responseText或responseXML返回。使用簡單的info.txtrequest.responseText可以正常工作,但是當我嘗試info.jsJSON.parse時,如果我多次檢查過我的語法正確,它會返回「意外標記非法」。這裏是JSON:爲什麼這個JSON.parse返回錯誤:「意外令牌非法」?

JSON:

{ 
    first: 1, 
    second: 2 
} 
+3

第一可言,來電,如果你使用它,你爲什麼寫自己的Ajax功能,看看到AJAX的jQuery的方法是什麼? – SergeS

+0

什麼是'info.js'? –

+2

,如果你提供你想在這個問題解析JSON字符串這將有助於;) – arnaud576875

回答

11

JSON.parse()對語法非常嚴格。鍵/值對應具有的形式:

string:value 

因此,「第一」和「第二」應該是在一個JSON對象字符串。 您的JSON更改爲下面的代碼,它應該是正確的

{ 
    "first": 1, 
    "second": 2 
} 
+0

感謝。我的標識符不包含在引號中,我得到了同樣的錯誤。包裝他們固定它。 – Netricity

+0

你也可以跳過JSON解析並分配它。 – doublejosh

5

你似乎已經在你的成功回調使用jQuery。 jQuery也有執行AJAX請求的方法,例如$.ajax,使得AJAX自定義函數非常無用。在你的情況下,你似乎在請求一個不同於JSON的JavaScript文件(.js)。所以:

(function() { 
    $.getScript('json.js', function(result) { 
     // TODO: do something with the result 
    }); 
})(); 

,或者如果它是JSON:

(function() { 
    $.getJSON('json.js', function(result) { 
     // TODO: do something with the result 
    }); 
})(); 

這是說你仍然可以繼續使用你的方法,但如果你的json.js不包含有效的JSON字符串JSON.parse(e)總是會失敗。要驗證它是否包含有效的JSON字符串,您可以在其上驗證它http://jsonlint.com

+0

感謝,http://jsonlint.com是救我 –