当一个对象列表已经是json格式时,理解jsonencode返回两个对象列表


understanding about returing two object lists by json_encode when one object list is already in json format

我使用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;在成功函数中,注释=data.data)

因此,现在我必须通过ajax调用获得另一个数组$arr2,所以用json_encode(数组($JsonData,$arr2))返回数据不起作用。由于$JsonData已经是json格式,所以在服务器端进行json编码可能会造成问题。

但如果i juse jquery-json解析如下jquery.parseJSON(data[0]);然后我遇到了comments=jQuery.parseJSON(data[0]).data.

考虑到如果parseJson不适用于所有的jquery版本,当$JsonData已经是json格式时,我还有什么方法可以避免服务器端的jsonencode耗时调用返回代码,并使事情在success函数中工作。仅供参考,我在ajax调用中使用了"json"作为dataType。

一种方法是在与其他数据组合之前先解码json:

echo json_encode(array(json_decode($JsonData),$arr2));

甚至可以像这样构建自己的json:

echo '[' . $JsonData . ',' . json_encode($arr2) . ']';

其将回声其中具有2个对象的阵列。