自动刷新控制器和视图


Auto refresh controller and view Yii

如何使这个页面自动刷新/更新每10秒当有/没有数据更新。就像推特上有新推文一样。

示例:This is in first second.

你有一个没有状态的名字

然后在10秒后,有一个事件,"name"数据已经添加。

你有两个名字没有状态

我该怎么办?我试过用javascript,但它不会刷新数据从控制器。

这是我的actioncheckNames控制器

 public function actioncheckNames() {
    //Check Name with No Status
    $noStat = new CDbCriteria();
    $noStat->condition = "status IS NULL";
    $noStat->order = "name ASC";
    $sums = Name::model()->count($noStat);
    //End of Check Function
    return array('sum'=>$sums);
}

这是视图上的索引

<script>
        $(document).ready(function() {
            setInterval(function() {
                $.ajax({
                    url: '<?php echo $this->createUrl('name/checkNames'); ?>'
                    , type: 'post'
                    , success: function(data) {
                        if (data) {
                                $("#checkname");
                                }
                            }
                        });
                    }, 5000 //5 seconds
                            );
                });
    </script>
<div id="checkname">
        <?php
        if ($sum != 0) {
            ?>
            <div class="alert alert-block alert-primary fade in">
                <button data-dismiss="alert" class="close" type="button">X</button>
                <h4 class="alert-titleing">You Have <?php echo $sum ?> Names With No Status. <a href="name/noStatus"><font color="White"><u>Check</u></font></a> </h4>
            </div>
        <?php }
        ?>
    </div>

*更新:创建actionCheckNames控制器和添加ajax脚本。但是我的网页不会刷新数据

你可以刷新你的JS设置间隔+ AJAX请求&可以试试下面的

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script>
$(document).ready(function(){
    setInterval(function(){
            $.ajax({
                url: '<?php echo $this->createUrl('controller/action');?>'
                ,type: 'post'
                //,data: {var1: val1, var2: val2,....}
                ,success: function(data){
                    if(data){
                        //Refresh your div/html element by appending here...
                    }
                }
            });
        },10000 //10 seconds
    );
});