1

この関数、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); ?>);
                      }                      
                }); 
4

2 に答える 2

2

JavaScriptにusers変数をハードコーディングしました。

<?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);
于 2013-02-13T16:11:44.183 に答える
1

成功したコールバックで同じ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' => array(user1、user2など)を持つ配列(またはオブジェクト)を返します。

于 2013-02-13T16:08:36.333 に答える