【发布时间】:2017-11-13 16:08:00
【问题描述】:
我有一个带有复选框列的网格视图和一个谷歌地图(2amigos)的视图。用户通过在网格视图中选择相应的项目来选择要在地图中显示的机器。一个 html 按钮将选定的键提交给控制器。遵循控制器代码(dataProvider 由 post-request 更新):
//some code before render
$dataProvider = new ActiveDataProvider(['query'=>$query, 'pagination'=>false]);
return $this->render('locating', [
'model' => $model,
'searchModel' => $searchModel,
'dataProvider1' => $dataProvider1,
'dataProvider' => $dataProvider,
]);
}
这是 html 按钮的 js 脚本:
$('#showButton').click(function(){
var keys = $('#w0').yiiGridView('getSelectedRows');
$.post("http://localhost:8080/eddb1/frontend/web/index.php?r=tracking/locating",
{'keylist': keys},
function(data){
console.log(data);
});
});
问题是,通过 post 请求,php-render 命令的结果会作为 html 字符串写入 post-response,但视图不会重新呈现。如果我对 activeForm 而不是 gridview (以选择机器)和提交按钮执行相同操作,则页面将按应有的方式重新渲染(但这种方式对我不起作用,因为我需要带有过滤器的 gridview 和排序)。我该怎么做才能使地图(或视图)通过后请求重新呈现?
【问题讨论】:
-
请出示控制器代码...
-
不明白为什么......但我会发布整个控制器代码
-
对这个问题有什么想法吗?
-
如果我理解正确,您正在尝试在同一视图中使用网格视图和活动表单。你正在使用什么样的类gridview? Yii2 gridview的普通类?
-
不,你理解错了:我需要使用gridview而不是activeform...使用activeform和multiselect-field一切正常但如果我使用带有普通参数的gridview则不行-post 请求如上面的代码所示。
标签: javascript post view yii2 render