我正在使用 ajax 获取帖子的 facebook 评论,因此以下 php 函数代码通过 json 编码将数据返回给 ajax 调用。
echo json_encode(array($JsonData,$arr2));
die();
但是 $JsonData 中的内容已经是 json 格式,因为我在该 php 函数中使用服务器端图形 API 调用获取 facebook 帖子的评论数据,并在 echo 之前首先分配给 $JsonData。
但是在ajax成功函数上我没有获取数据。
success:function (data, textStatus, XMLHttpRequest) {
var comments=data[0].data;
alert(comments); //shows something undefined
(因为当我单独以这种方式获取数据时,我仅在 php 函数中返回评论数据,这样 echo $JsonData; 并在成功函数 comments=data.data 中)
所以现在我必须通过ajax调用获取另一个数组$arr2,因此使用json_encode(array($JsonData,$arr2))返回数据不起作用。由于 $JsonData 已经是 json 格式,因此在服务器端进行 json 编码可能会导致问题。
但是如果我使用 jquery json 解析如下 jQuery.parseJSON(data[0]);然后我妨碍了 comments=jQuery.parseJSON(data[0]).data。
考虑到parseJson是否不适用于所有jquery版本,当$JsonData已经是json格式时,还有什么其他方法可以避免服务器端返回代码中的json_encode耗时调用并使事情成功运行。仅供引用,我使用了“json”作为 ajax 调用中的数据类型。
最佳答案
一种方法是在与其他数据组合之前先解码 json:
echo json_encode(array(json_decode($JsonData),$arr2));
或者甚至像这样构建自己的 json:
回显'['。 $JsonData . ','。 json_encode($arr2) 。 ']';
这将回显一个包含 2 个对象的数组。
关于javascript - 了解当一个对象列表已经是 json 格式时,如何通过 json_encode 返回两个对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23201486/