Yii: 如何在CGridView通过Ajax方式刷新数据后执行JS脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii: 如何在CGridView通过Ajax方式刷新数据后执行JS脚本相关的知识,希望对你有一定的参考价值。

参考技术A Yii框架中的CGridView控件数据刷新是通过Ajax方式来实现的,如果有一些js脚本是在页面加载或重新加载的时候执行,那么在CGridView控件刷新的时候,这些js就得不到执行。这样会导致表格数据得到了更新,但部分js效果丢失的情况。解决的方法很简单,把页面加载时执行的js语句封装为函数,然后设置CGridView的afterAjaxUpdate属性,如下:'afterAjaxUpdate' => 'function() oops(); '在页面尾部添加js<script type="text/javascript"> ops(); function oops() alert('oops!'); </script>by iefreer本回答被提问者采纳

yii cgridview refresh导致多个ajax调用

任何人都知道为什么yii cgridview刷新按钮会导致多个ajax调用。

当我刷新时,它会导致以下ajax调用(这次是3次,有时是4次和5次)

GET http://localhost/ijob-css/index.php/activities/d.../activities_id/13/source/iJOB?ajax=sessions-grid

200 OK
        320ms   
jquery.min.js (line 4)
GET http://localhost/ijob-css/index.php/activities/d.../activities_id/13/source/iJOB?ajax=sessions-grid

200 OK
        266ms   
jquery.min.js (line 4)
GET http://localhost/ijob-css/index.php/activities/d.../activities_id/13/source/iJOB?ajax=sessions-grid

200 OK
        262ms   
jquery.min.js (line 4)

有时它变成4或5个ajax调用同一个URL。

但只是第一次,它工作正常我的意思是刷新发生一次。

答案

您的控制器中是否有运行此代码的RenderPartial?如果是这样,我建议您在Yii中查找scriptMap,以防止每次使用此控制器时运行JQuery。

Yii :: app() - > clientScript-> scriptMap = array('jquery.js'=> false,'jquery.yiigridview.js'=> false);

我之前遇到过同样的问题。我在gridviews和其他具有ajax操作的视图中遇到过这种情况。希望这可以帮助。

以上是关于Yii: 如何在CGridView通过Ajax方式刷新数据后执行JS脚本的主要内容,如果未能解决你的问题,请参考以下文章

我可以从 js 刷新 Yii CGridView 吗?

Yii:CGridView中dataProvider的格式

Yii CGridView仅隐藏过滤器输入

Yii CGridView Pager 生成链接错误?

Yii:在CGridView中显示第二个DB内容

当Relation是同一张表中的键时,使用CGridView在Yii中按相关模型搜索和排序