yii2:使用与请求页面不同的Pjax更新/刷新/重新加载页面

时间:2015-01-05 20:47:57

标签: javascript php jquery yii2

我已经问了这个问题,但我觉得这个问题不够清楚,所以我说的不同。我有一个_form.php页面和一个grid-view(index.php)页面。

我从_form.php发送Pjax请求,想要更新/刷新grid-view(index.php)页面。

在我的_form.php上面我有这个代码。

<?php

    $this->registerJs(
       '$("document").ready(function(){ 
            $("#new_medicine").on("pjax:end", function() {
                $.pjax.reload({container:"#medicine"});  //Reload GridView
            });
        });'
    );
    ?>

现在容器"#medicine"不在_form.php页面上,而是在grid-view(index.php)页面上。那么如何修改上面的代码,以便更新/刷新index.php页面中的容器"#medicine"

我想我已正确解释了这种情况。如果需要更多信息,请告诉我。

感谢。

1 个答案:

答案 0 :(得分:3)

尝试使用$this::POS_READY而不是将代码包装在$("document").ready(function(){})

$js = '$("#new_medicine").on("pjax:end", function() {
           $.pjax.reload({container:"#medicine"});  //Reload GridView
       });'

$this->registerJs($js, $this::POS_READY);

修改

显然,您希望在使用index.php插入数据后重新加载在其他客户端_form.php上打开的网格视图。

将jQuery命令发送到另一个客户端(浏览器)并执行它是不可能的。

例如,您可以每x秒或分钟在index.php重新加载gridview。

 $js = 'function refresh() {
     $.pjax.reload({container:"#medicine"});
     setTimeout(refresh, 5000); // restart the function every 5 seconds
 }
 refresh();';
 $this->registerJs($js, $this::POS_READY);