我已经问了这个问题,但我觉得这个问题不够清楚,所以我说的不同。我有一个_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"
。
我想我已正确解释了这种情况。如果需要更多信息,请告诉我。
感谢。
答案 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);