如何在返回Javascript的数组中使用php数组?

时间:2015-07-02 19:24:16

标签: javascript php jquery arrays ajax

我已经在这里待了半天以上,试图找出这个问题,我发誓,我已经尝试了所有可能的事情。所以这就是我想要做的事情背后的想法...每10秒Javascript执行一次AJAX调用,看看你是否有在线朋友,然后返回用户列表,他们的状态等。而不是格式化PHP中的所有内容,我会出于各种原因从Javascript格式化它......所以这里发生了什么:

的Javascript //让我们从控制器获取数据

 $.post('/pagething', { datastuff }, function(data){
 if(data.status == 'ok'){

 // Magic nonsense here that can translate the array example:
 var keys = Object.keys(data.allfriends);

   }
 } etc...

PHP //让我们跳过控制器中的其他代码并关注重要的东西

 $friends_information = array(
 'userid' => array();
 'username' => array();
 'avatar' => array();
 'status' => array();
 );

 foreach($result_from_my_friends_model as $row){
 // For ease of read, i'll just associate things with $row

 $friends_information["userid"][] = $row->user_id;
 $friends_information["username"][] = $row->username;
 $friends_information["avatar"][] = $row->avatar;
 $friends_information["status"][] = $row->status;
 }

 $result = array('status' => 'ok', 'allfriends' => $friends_information);
 return json_encode($result);
 exit();

我最接近的是要么通过说出用户名获得结果,要么通过新对象获取结果或获取整个结果但是因为对象[0] [1]无法区分密钥将返回undefined。

先谢谢你,这个东西很难理解:/

2 个答案:

答案 0 :(得分:1)

没有必要将每列放入$friend_array的单独元素中,如果将所有与特定朋友相关的数据保存在一个对象中,事情通常会更容易。所以:

$result = array('status' => 'ok', 'allfriends' => $result_from_my_friends_model);
echo json_encode($result);

在Javascript中,请确保指定结果为JSON:

$.post('/pagething', { datastuff }, function(data) {
    if (data.status == 'ok') {
        $.each(data.allfriends, function(i, friend) {
            // do stuff with friend.userid, friend.username, friend.avator, friend.status
        });
    }
}, 'json');

答案 1 :(得分:0)

您已经在js的keys变量中拥有list_of_friend。只需遍历它,您就可以获得所需的结果。祝你好运