1:index.html
<!-- begin filter -->
<input type="radio" id="" name="top10" value="top10">Top 10
<input type="radio" id="" name="top20" value="top20">Top 20
<input type="radio" id="" checked="checked" name="all" value="all">All
<!-- end filters -->
{% for user in users %}
{% include 'userslist.html' %}
{% endfor %}
在'index.html'中,默认操作是列出所有用户。当我更改过滤器时,这会调用'user.js'中的ajax函数。
2:user.js
$.ajax({
url: 'user/find/'+params,
type: 'get',
data: null,
async: false,
dataType: 'html',
success: function(dataJson){
?????
},
error: function(jqXHR, textStatus, errorThrown){},
complete: function( jqXHR, textStatus ){}
});
return jsonContratos;
}
这个ajax函数调用User.php类
3:User.php
class User extends AppRequest
{
public function __construct(){}
public function index_action()
{
$this->template('index.html', Array('users' => $this->find()));
}
public function find()
{
$arrayUsers = dataBase->findUsersByFilters($_GET['params']);
if( $this->isAjaxRequest() ){
$array = Array('users' => $arrayUsers)
$this->template('index.html', $array);
}else{
return $arrayUsers;
}
}
}
问题: - 如何使用ajax回调将新用户列表发送到模板? - 或者最好的方法是什么? - 有可能用Json做到这一点吗?
答案 0 :(得分:0)
如前所述,请勿使用async: false
。根据定义,AJAX是异步的。关于您的问题:只需在成功回调中更新您的视图即可。你返回HTML,所以只需注入它:
$.ajax({
url: 'user/find/'+params,
type: 'get',
data: null,
async: false,
dataType: 'html',
success: function(data, textStatus, jqXHR){
// for example
$("#some-id-or-class-of-your-main-element").html(data);
},
error: function(jqXHR, textStatus, errorThrown){},
complete: function( jqXHR, textStatus ){}
});