Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解析包含PHP对象数组的JSON对象?_Php_Javascript_Ajax_Json_Parsing - Fatal编程技术网

如何解析包含PHP对象数组的JSON对象?

如何解析包含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

我创建了一个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\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)