如何在加载页面后重新填充变量

时间:2013-02-13 16:04:51

标签: php javascript ajax cakephp cakephp-1.3

这个功能,ajax ......每件事都运作良好。
当我想重新加载$ ​​users时,它会返回相同的$ users
加载ajax后用新数据重新加载$ ​​users有什么办法吗?

控制器

function list_of_users_by_skills($project_ids){

         $project_id = json_decode($project_ids);
            /* Generate Users by Skills 
            * By Isaac
            */ 
           $this->loadModel('Training');                              

           //Get list of users by skills
           $users_return = $this->Training->find('all', array('conditions' => array('Training.Project_id' => $project_id)));

            //some code here to return the $users :)

           asort($users); 
           $this->set('users', $users);                            
    }

查看

var page = 'http://localhost/index.php/shifts/list_of_users_by_skills/[176,196]/'; 
               console.log(page);

                $.ajax({                          
                      url: page,                          
                      success: function(data) {
                          <?php  echo "var user_array = [" . json_encode($users) . "];\n"; ?>
                            console.log(user_array);    
                           console.log(<?php echo json_encode($users); ?>);
                      }                      
                }); 

2 个答案:

答案 0 :(得分:2)

您已在javascript中对用户变量进行了硬编码:

<?php  echo "var user_array = [" . json_encode($users) . "];\n"; ?>

这只会在初始页面请求中填写一次。

您需要确保使用ajax调用的脚本返回实际用户列表并使用:

类似的东西:

$.ajax({                          
       url: page,
       dataType: "json",                    
       success: function(data) {
            var user_array = data;
            console.log(user_array);
       }                      
}); 

你的page脚本应该在最后做这样的事情:

 echo json_encode($users);

答案 1 :(得分:1)

你在succes回调上推送相同的user_array ......

你应该在函数之前声明var并覆盖函数{

中的var
var page = 'http://localhost/index.php/shifts/list_of_users_by_skills/[176,196]/';
var users =  [<?php echo json_encode($users);  // or make in an array so json_encode is sufficient ?>];
$.ajax({                          
    url: page,                          
    success: function(data) {
        users = data.users;
    }                      
}); 

你是网关(PHP的一面)将返回一个数组(或对象),其中包含一个键'users'=&gt;数组(user1,user2等);