gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:03:20 25 4
gpt4 key购买 nike

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

函数 callFunction() 定义在一个单独的 js 文件中,我在第一次加载页面时包含该文件,如下所示:

<script type="text/javascript" src="/../../Javascript/messages/messages.js"></script>

该函数在我第一次加载页面时被调用,但在 ajax 调用之后它不再被调用。我怀疑是因为它找不到 message.js 文件,所以我尝试再次包含它,将这段代码添加到 CListView 定义中:'baseScriptUrl'=>'/../../Javascript/messages/messages.js', 但现在我收到此错误:jQuery("#listMessages").yiiListView 不是一个函数 ...有什么想法吗?

解决方案

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

问题出在必须在 ajax 更新后调用的函数的签名中。它必须像解决方案中所述。谢谢@jfriend00

最佳答案

永远不需要重新加载脚本文件来使用其中的函数,除非您转到一个新页面或转到一个看不到函数的不同范围,或者除非有什么东西破坏了脚本标签。如果您仍在同一页面上并且仍在适当的范围内,那么功能仍然存在。您应该专注于为什么这些函数不起作用,而不是尝试第二次加载脚本文件。

如果您可以向我们展示包含 ajax 调用的实际生成的 javascript,我们可以帮助您弄清楚为什么它第二次不起作用。解决根本原因比寻求重新加载的 hack 变通方法要好得多。

关于javascript - 如何指定在 CListView 中调用 ajax 后要包含的 JS 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6886400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com