这个功能,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); ?>);
}
});
答案 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并覆盖函数{
中的varvar 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等);