2009-11-10 167 views
0

我正在向服務器發送一個post請求並獲取我想要的數據數組,但我看不到要訪問這些單個元素,我找不到原因。從服務器解析JSON響應的問題

這是它的JIST

$(document).ready(function() { 
    $.post("myscript", { Action: "JQueryReq", }, 
    function(data){ 
    alert(data); 
    }); 
}); 

如果我做了以上我回到我想要的一切,它看起來像這樣(在JS對話框)

[{"val1":null,"val2":null,"val3":null,"Size":"Inches","valu4":null}] 

但是,如果我改變

alert(data); 

alert(data.Size); 

我只是得到 「未定義」

我也試過

var myjsonreturn = eval(data); 
alert(myjsonreturn.Size); 

我也試過

var myjsonreturn = eval('('+data+')'); 
alert(myjsonreturn.Size); 

每一次我得到了一個未定義。

我在做什麼錯?

TIA

+1

請更正您的問題標題,以提供比「另一個」JSON解析問題更豐富的內容。它與訪問JQuery中的特定元素有關。請讓您的標題對其他所有人解決JSON問題有所幫助。 – 2009-11-10 19:29:16

+0

同意。這不是一個論壇,請問一個真正的問題! – Soviut 2009-11-10 19:43:52

+0

固定,對不起, – Chris 2009-11-10 20:16:19

回答

1

什麼是data?它是一個字符串嗎?如果是這樣,您要使用:

eval('('+data+')')[0].Size; 
+0

就是這樣,謝謝約翰! – Chris 2009-11-10 20:16:55

0

試過嗎?

alert(data[0].Size) 
0

作爲JSON響應返回的是一個只有一個單元格的數組。因爲數組的長度爲1的指數將從數0開始,這樣你就可以訪問這樣的內容:

alert(data[0].Size); 

或者,如果你通過與jQuery的。每()的值要循環:

$.each(data[0], function(index, value){ 
    alert(index + ':' + value); 
});