Javascript 如何在CListView中指定ajax调用后包含的JS脚本

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

在一个ajax调用之后,我正在调用一个函数

$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',
                ));