我使用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个对象的阵列。