4

我在 Yii 中做了一个基本的喊话箱,一切都很好。它设置为通过 ajax 每 10 秒刷新一次,这也很有效,但是如果我在加载时单击另一个页面(当小微调器在那里时),则会出现一个空白的 javascript 警报,另一个页面加载并且警报消失,但是我不知道它来自哪里,它不在我的代码中。Firebug 没有给出任何错误,任何帮助将不胜感激。

这是刷新代码:

<script type="text/javascript">

$(function() {
function callAjax(){
    $.fn.yiiListView.update('Shoutbox');
    return false;
}
setInterval(callAjax, 10000 );
});
</script>

这是列表视图:

<?php $this->widget('zii.widgets.CListView', array(
'id' => 'Shoutbox',
'dataProvider'=>$dataProvider,
'itemView'=>'shoutbox.views.shoutbox._view',
#'afterAjaxUpdate'=>'js:function(id, data) {$("abbr.timeago").timeago();}', //for ajax update
'summaryText' => '',
'emptyText' => '',
)); ?>

我试过把 return: false; 在刷新但它没有工作,我注释掉了 afterAjaxUpdate 但它仍然发生。

4

1 回答 1

1

好的,希望这最终会对其他人有所帮助。

在 Yii 框架(版本 1.1.12)中打开文件:

\yii\zii\widgets\assets\listview\jquery.listview.js

找到第 117 行:

error: function(XMLHttpRequest, textStatus, errorThrown) {
            $('#'+id).removeClass(settings.loadingClass);
            //alert(XMLHttpRequest.responseText);
        }

注释掉警报,问题解决!

看起来是因为请求被打断了 Yii 抛出了一个非常有意义的错误,但是空白警报很烦人。

还记得在更改文件后清除您的资产文件夹和浏览器缓存。

于 2012-12-19T19:28:18.913 回答