javascript - yii2 在请求后渲染

标签 javascript post view yii2 render

我有一个带有复选框列的 GridView 和一个谷歌地图(2amigos)的 View 。用户通过选择 GridView 中的相应项目来选择要在 map 中显示的机器。 html 按钮将选定的键提交给 Controller 。遵循 Controller 代码(dataProvider 通过后请求更新):

//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,但 View 不会重新渲染。如果我使用 activeForm 而不是 gridview (来选择机器)和提交按钮执行相同的操作,页面将按应有的方式重新呈现(但这种方式对我不起作用,因为我需要带有过滤器的 gridview 和排序)。我该怎么做才能通过后期请求重新渲染 map (或 View )?

最佳答案

尝试使用renderAjax当通过 ajax 请求时呈现 View 的方法。我假设您使用 actionLocating 来呈现页面获取请求和 ajax 的 View 。因此,在 Controller 中调用 render 之前,请检查这是否是 ajax 请求:

$renderMethod = Yii::$app->request->isAjax ? 'renderAjax' : 'render';

return $this->$renderMethod('locating', $viewParams);

关于javascript - yii2 在请求后渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31272381/

相关文章:

javascript - 使用 "+"符号快速解析 queryParams

javascript - webgl纹理格式,类型和internalFormat的无效组合

java - PUT 和 POST - 它们是否依赖于实现?

ruby-on-rails - 在一个 View 表中对多个模型进行排序

android - 如何在 Android 上将自定义 View 居中?

javascript - 自动完成功能不起作用

javascript - 在 Node.js 中导入钩子(Hook)

post - 使用cmake完成后如何打印消息?

php - 将此 .php 转换为 ObjC 可运行的 NSURLSession POST 请求?

mysql - 如何将动态参数传递给 MySQL View