2009-10-08 43 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