Javascript 如何在CListView中指定ajax调用后包含的JS脚本
在一个ajax调用之后,我正在调用一个函数Javascript 如何在CListView中指定ajax调用后包含的JS脚本,javascript,listview,jquery,yii,Javascript,Listview,Jquery,Yii,在一个ajax调用之后,我正在调用一个函数 $this->widget('zii.widgets.CListView', array( 'viewData'=>array('sent'=>$sent), 'dataProvider'=>$dp, 'pager' => array( 'prevPageLabel'=>'< Ante
$this->widget('zii.widgets.CListView', array(
'viewData'=>array('sent'=>$sent),
'dataProvider'=>$dp,
'pager' => array(
'prevPageLabel'=>'< Anterior',
'nextPageLabel'=>'Siguiente >',
'header'=>'Pagina: ',
'pageSize'=>5,),
'template'=>"{items}\n{pager}", //template
'itemView'=>'_messageView',
'emptyText'=>'No ha recibido ningun mensaje todavia',
'enablePagination'=>true,
'baseScriptUrl'=>'/../../Javascript/messages/messages.js',
'afterAjaxUpdate' => 'js:callFunction()',
'id'=>'listMessages',
));
问题在于函数的签名,在ajax更新后必须调用该函数。它必须像解决方案中所述的那样。感谢@jfriend00除非您转到一个新页面,或者转到一个不同的范围,无法看到函数,或者脚本标记被破坏,否则永远不需要重新加载脚本文件来使用其中的函数。如果您仍然在同一页上并且仍然在适当的范围内,那么函数仍然存在。您应该关注函数不工作的原因,而不是第二次尝试加载脚本文件
如果您可以向我们展示实际生成的包含ajax调用的javascript,我们可以帮助您找出为什么第二次它不起作用。修复根本原因要比重新加载更有效。你说得对。这不是包含javascript的问题,错误在函数的签名中。它必须是函数类型(id,data),其中id是指接收到的ajax响应数据()的列表视图data的id。我编辑了最初的问题并包含了解决方案。非常感谢。
<script type="text/javascript" src="/../../Javascript/messages/messages.js"></script>
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$ligas,
'viewData'=>array('joinedArray'=>$joinedArray),
'template'=>"{items}", //template
'itemView'=>'_viewLiga',
'emptyText'=>'Usted todavia no se ha unido a ninguna liga',
'afterAjaxUpdate'=>'js:function(id, data) {myLigasListUpdated();}',
'enablePagination'=>false,
'id'=>'listViewMyLigas',
));