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脚本的主要内容,如果未能解决你的问题,请参考以下文章