2009-10-08 63 views
0

我通過AJAX獲得了一個響應,我的服務器的數組是json_encode(php funciton)。但是,我解析它有困難。從PHP解析JSON的問題

我可以這樣做:

alert(response); 

,但它只是給了我像這樣一串文字:

[{ 「user_ID的」: 「Dev_V2_MEH_0910_M03_v03c_NEW_CODE_03」 ...... 「grouper_opae_algorithm」 :「nap_v42lp」}]

請注意,我剪掉了很多。我試過這個:

alert(response[0].user_id); 

這只是給了我未定義。

我在做什麼錯?

回答

5

您將其作爲字符串取回 - 您需要將其轉換爲對象。

如果您使用的是類似jQuery或Prototype的庫,那麼將會有一個內置方法來執行此操作。否則,你可以使用eval:

object = eval('(' + response + ')'); 

這不,雖然打開了一些安全漏洞 - 如果一個函數注入,將要執行的JSON。

+2

如果我使用JQuery,該怎麼辦?它是getJson()嗎? – Abs 2009-10-08 11:40:59

+3

是的,你應該使用getJSON()方法:http://docs.jquery.com/Ajax/jQuery.getJSON – Greg 2009-10-08 11:42:17

+0

...你需要另一個單引號。 (: – peirix 2009-10-08 11:48:38

1

解析JSON最基本的方法是使用的eval()命令:

json = eval(response); 
alert(json[0].user_id); 

這是更好地使用像原型或jQuery的函數庫,有助於淨化你的JSON如果來源是不可信的。

+0

來源可靠其自己的服務器,但我更喜歡使用jQuery。它是getJSon()函數嗎? – Abs 2009-10-08 11:41:50

+0

你需要圍繞響應的括號 – Greg 2009-10-08 11:42:49