如何解析包含PHP对象数组的JSON对象?
我创建了一个AJAX函数,它与分页链接一起使用,可以动态加载一个新的帖子页面,并且一切正常,只是我不知道如何解析像这样的JSON对象 这是作为JSON传递的PHP样式:如何解析包含PHP对象数组的JSON对象?,php,javascript,ajax,json,parsing,Php,Javascript,Ajax,Json,Parsing,我创建了一个AJAX函数,它与分页链接一起使用,可以动态加载一个新的帖子页面,并且一切正常,只是我不知道如何解析像这样的JSON对象 这是作为JSON传递的PHP样式: Array ( [0] => stdClass Object ( ['var1'] => val1 ['var2'] => var2 ) [1] => stdClass Object ( ['var1'] => val1
Array (
[0] => stdClass Object (
['var1'] => val1
['var2'] => var2
)
[1] => stdClass Object (
['var1'] => val1
['var2'] => var2
)
[3] => stdClass Object (
['var1'] => val1
['var2'] => var2
)
)
并与此一起传递给它:
$response = json_encode( array( 'success' => true, 'posts' => $new_posts ) );
其中$new\u posts
是我试图解析的数组
有人能告诉我如何访问这些变量及其值吗?谢谢
更新:
我正在尝试从JavaScript访问这些
更新2:当我使用var posts=JSON.parse(response.posts)时代码>我在Google Chrome Javascript控制台中遇到以下错误:
未捕获的语法错误:输入意外结束
更新3:我刚刚检查了Firebug,它似乎只返回JSON响应文本:
{“success”:true,“posts”:[]}
JSON是有效的javascript,因此最简单的解决方案(假设您100%信任JSON的源代码)是简单地对其求值()
如果您使用的是jQuery之类的库,则有一些内置方法可以更安全地评估json字符串。我假设您希望通过JavaScript访问,因为PHP中有此功能。在XHR成功回调中,将响应插入JSON.parse()中;并按如下方式访问所有内容
var data = JSON.parse(recievedData); // newer browsers, optionally you can use jQuery or eval()
console.log(data); // test;
// loop through all data
for(var i=0;i<data.length;++i) {
console.log(data[i].var1); // expects val1
console.log(data[i].var2); // expects val2
}
//access one bit
console.log(data[0].var1);
由于您使用的是jQuery,最好的方法是使用parseJSON
方法:
var respObj=jQuery.parseJSON(响应)代码>Sooo。。。。您是否想向我们展示实际的JSON?您是否试图从JavaScript访问这些变量?字符串长度超过6500个字符,非常抱歉!更新了我的问题。我也在使用jQuery库,脚本依赖于它。您能告诉我如何这样做吗?您可能还想包括一个关于新ECMAScript 5标准的说明。JSON.parse更正确。如果JSON来自不受信任的源,那么您正在评估其任意javascript。即使在旧版本的IE中,我也习惯于从JSON.org获取JSON类,以获得一种更安全的方法。信息量非常大。当我使用它时,在Google Chrome Javascript控制台中会出现以下错误:未捕获的语法错误:输入意外结束
-知道为什么会发生这种情况吗?这很可能意味着JSON文本中有一个未终止的字符串。这可能是因为一个字符串被错误地转义了。你是对的,我必须对它进行双重编码,现在我能够在我的Javascript代码中获取变量。谢谢
var data = JSON.parse(recievedData); // newer browsers, optionally you can use jQuery or eval()
console.log(data); // test;
// loop through all data
for(var i=0;i<data.length;++i) {
console.log(data[i].var1); // expects val1
console.log(data[i].var2); // expects val2
}
//access one bit
console.log(data[0].var1);
var data = jQuery.parseJSON(recievedData)