2011-09-23 71 views
2

我正在使用某個網站,並使用JSON。我的問題是JSON.parse方法,我用它來發送一個簡單的數組,並追加到數組的值。最後我總是會得到一個額外的元素,我們只是逗號。這裏是簡化代碼:爲什麼我會在JSON的最後得到一個額外的元素?

responseText = '["dummy1", "dummy2", "dummy3", "dummy4"]'; 
var clientList=[]; 
try { 
    JSON.parse(responseText, function(key, val){clientList.push(val)}); 
} catch (e) { 
    alert('no'); 
} 

alert(clientList.length); 

首先在IE中它根本不工作(拋出異常)。

第二個chrome結果是clientList是一個由5個字符串組成的數組,而最後一個是',,,'。

爲什麼那裏有額外的價值?我可以擺脫它(沒有在最後彈出數組)? IE有什麼問題?

+0

「拋出的異常」應該如何幫助我們告訴你什麼是錯的? – Gabe

回答

4

這將工作:

responseText = '["dummy1", "dummy2", "dummy3", "dummy4"]'; 
var clientList=[]; 
try { 
    clientList = JSON.parse(responseText); 
} catch (e) { 
    alert('no'); 
} 

IE沒有JSON作爲瀏覽器默認。你需要一個像json2這樣的庫。

至於你的問題,該回調函數實際上是爲了轉換你的對象而不是構建它。例如:

var transformed = 
JSON.parse('{"p": 5}', function(k, v) { if (k === "") return v; return v * 2; }); 
// transformed is { p: 10 } 

parse

0

有在在不同瀏覽器中使用JSON的差異。一種方法是做IAbstractDownvoteFactory所說的。另一種方法是使用jQuery庫和

clientList = $.parseJSON(responseText); 

應該做任何瀏覽器下的工作(雖然我沒有在IE下測試它)。

相關問題