2011-09-30 53 views
3

我使用$。員額()方法來檢索一個JSON格式的字符串,它看起來像這樣:如何JSON格式的字符串轉換成JSON數組在javascript

{elementid:10},{elementid:11},{elementid:12},{elementid:14},{elementid:15} 

在成功的回調函數$ .post(),我想循環這個json格式化字符串的值,但我不知道如何去做。

// data returns {elementid:10},{elementid:11},{elementid:12},{elementid:14}, etc. 

    $.post('form.php', 

     {'postvalues' : input_ids}, 

     function(data){ 

       var elements = Array(); 

       elements = [data]; 

       for(var i=0; i<elements.length; i++) { 
        var value = elements[i]['elementid']; 
        alert('value = '+value); 
       } 
    }); 

當我做到這一點,而不是讓value = 10, value = 11, value = 12等的警告框, 我得到value = undefined

我必須在變量「數據」的格式,因此,這將是改變什麼解釋爲數組值而不是字符串?

感謝您的幫助

+1

非常感謝你們。使用jQuery.parseJSON解決問題,添加[]並用雙引號包裝JSON密鑰 – Vincent

+0

在這種情況下,請通過單擊@Vincent旁邊的綠色複選標記接受答案作爲解決方案。 –

+0

完成後,我正在尋找「已解決」按鈕,謝謝 – Vincent

回答

5

您的字符串不是有效的JSON,如果你不具備'['']'字符。

您可以將它們添加進去,然後使用jQuery.parseJSON()[docs]方法對其進行解析。

elements = jQuery.parseJSON('[' + data + ']'); 

......但是如果您從服務器發送正確的JSON數據會更好。

此外,您的JSON密鑰必須用雙引號括起來。

{"elementid":10},{"elementid":11},{"elementid":12},{"elementid":14},{"elementid":15} 
0

使用JSON.parse(data)把它包含在一個變量

0

JSON對象試試這個字符串,它看起來像你獲得通過數組(除了缺少周圍[] ),如果你告訴jQuery的,它的JSON它會正確地解析爲您:

$.post('form.php', {'postvalues' : input_ids}, function(data){    
    for(var i=0; i<data.length; i++) { 
     var value = data[i]['elementid']; 
     alert('value = '+value); 
    } 
}, 'json'); // telling it that the content received is json 
1

您的查詢沒有返回有效的JSON。它應該是[{"elementid":10},{"elementid":11},{"elementid":12},{"elementid":14},{"elementid":15}]而不是{elementid:10},{elementid:11},{elementid:12},{elementid:14},{elementid:15}。有什麼方法可以解決這個問題嗎?否則,你將不得不這樣做:

elements = jQuery.parseJSON("[" + data + "]"); 

做正確的事情,但是,從服務器返回有效JSON(如果你有過任何控制)。

0

使用「for in」語句。如:

for (var x in data) { 
    console.log(data[x]['elementid']); 
} 

我測試了它,它完美的工作! 希望這有助於。

Ps。 Console.log()在瀏覽器控制檯中輸出結果(當然,這在IE中不起作用)。