我開始在瀏覽器中發現錯誤,從服務器解析JSON返回數據。起初我以爲這是專門針對我的數據的東西,但即使是一些愚蠢像帶雙引號的標籤在瀏覽器中產生錯誤「無效標籤」
{"a": 1}
結果在Firefox中的錯誤「無效的標籤」和「語法錯誤:意外標記:」在Chrome中。當更改爲
{a:1}
(即刪除標籤周圍的雙引號)它工作正常。不過,我相信即使使用雙引號,它也是有效的JSON(並且JSONLint也同意這一點)。
我所看到的解決方法是圍繞JSON對象與支架,像這樣:
({"a":1})
,並從瀏覽器控制檯這一工程,但不是當我改變我的服務器的數據(這是響應一個JSONP調用),我也無法在瀏覽器中更改它,因爲我正在使用庫(Dojo),並且我沒有機會在解析返回數據之前攔截它。
UPDATE
我發現我的服務器代碼,在那裏我不是在JS功能的JSONP響應包中的數據的錯誤。這已經解決了這個問題,我隨後需要刪除這個問題。道歉,謝謝你的迴應。
更糟糕的是,我確信這個工作之前,但我不能解釋如何或爲什麼。 – mydoghasworms
請說明你如何解析JSON。對於有效的JSON密鑰名稱,雙引號是_required_,但我認爲問題在於您正在執行JSONP調用,因此客戶端代碼期望看到它可以執行的一些JS。它將{看作是代碼塊的開始,而不是對象字面的開始,所以當它看到冒號之前它認爲它是標籤(比如你可以使用continue或break語句) 。將所有東西放在parens中意味着它被解釋爲一種表達。 JSONP和JSON的工作方式不同。 – nnnnnn
我的歉意,但我發現我的服務器代碼中有一個錯誤,即數據沒有被包裝在JSONP響應的函數調用中,因爲它應該是。作爲結果,我將刪除此問題。感謝您的時間和精力和解釋。 – mydoghasworms