我创建了一个与分页链接一起使用的AJAX函数,可以动态加载新的帖子页面,并且除了我无法弄清楚如何解析像这样的JSON对象之外,一切都运行良好。
这是以JSON格式传递的PHP样式:
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_posts
是我正在尝试解析的数组。
有人能告诉我如何访问这些变量及其值吗?感谢。
我正在尝试从JavaScript访问这些内容。
更新2 :当我使用var posts = JSON.parse( response.posts );
时,我在Google Chrome Javascript控制台中收到以下错误:
Uncaught SyntaxError: Unexpected end of input
更新3:我刚检查过Firebug,它似乎只是为JSON响应文本返回此内容:
{"success":true,"posts":[]}
答案 0 :(得分:2)
我假设你想通过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响应方法(有很多方法可以实现这一点)
var data = jQuery.parseJSON(recievedData)
答案 1 :(得分:1)
由于您使用的是jQuery,最好的方法是使用parseJSON
方法:
var respObj = jQuery.parseJSON(response);
答案 2 :(得分:0)
JSON是有效的javascript,所以最直接的解决方案(假设您信任json 100%的来源)就是简单地eval()它。
var response = eval(the_json);
if (response.success){
var posts = response.posts
}
如果您正在使用像jQuery这样的库,那么有一些内置方法可以更安全地评估json字符串。