2013-08-17 52 views
0

所以,我的JSON響應是一個簡單的數組:控制檯拋出JSON.parse錯誤使用數組

[35,55] 

的Chrome網絡檢查顯示其爲有效的JSON。但是,當我在xhr.responseText上使用JSON.parse時,它給了我錯誤:Uncaught SyntaxError: Unexpected token :

我試過使用JSON.stringify,只是使用它而不解析它在JSON.parse中,但它不是被JS視爲一個數組。

JSONLint說它也是有效的JSON。

我不知道該怎麼做,我只是想用我的xhr數組作爲JS中的一個數組。

+0

響應文本是什麼樣的? – elclanrs

+0

正如我所說,它看起來像:[35,55] –

+0

那麼,裏面沒有':'......你的內容類型是否設置爲'json'? – elclanrs

回答

0

問題竟然是,我是解析JSON兩次。

0

我在使用我的應用程序時遇到了兩次此錯誤。當然,我有一個複雜的Json,並不像你的那麼簡單。以下是兩種情況。請檢查它們中沒有一個與您的案例相符。 a。正如我所說我使用複雜的JSON,我錯過了使用「,」有時我用花括號來定義一個數組。 b。我必須證實js反對一個類。我的json有超過2個額外的值。所以它無法解析它。 希望這次體驗有所幫助!

0

問題是我使用JSON.parse將已被JSON.parse解析的變量傳遞給存儲變量,從而導致錯誤。

這裏是我做錯了什麼一個例子:

var currentJSON = JSON.parse(xhr.responseText); 
var oldJSON = []; 
if (currentJSON) { 
    /* do stuff with currentJSON, like compare currentJSON with oldJSON */ 
    oldJSON = JSON.parse(currentJSON); /* <- THIS is what caused the issue */ 
} 

這是我應該做的:

var currentJSON = JSON.parse(xhr.responseText); 
var oldJSON = []; 
if (currentJSON) { 
    /* do stuff with currentJSON, like compare currentJSON with oldJSON */ 
    oldJSON = currentJSON; /* <- removed JSON.parse(); from currentJSON */ 
}