weixin_33692284 2015-06-03 16:01 采纳率: 0%
浏览 13

Yii小部件通过Ajax重新加载

I need to reload a content of my Yii widget via AJAX every XX seconds.
This is my widget code:

class UserOnlineWidget extends CWidget
{
  public function init(){

  }

  public function run(){
    $userOnline=User::getOnlineUser();       
    $this->render("userOnLineWidget", array('userOnline'=>$userOnline));
  }

}

And this is the view userOnLineWidget.php:

<div class="userOnline">
<h5>User Online</h5>
<ul>
<?php 
    foreach($userOnline as $user) { 
    ?>
    <li>
        <ul>
            <li><?php echo CHtml::link($user['username'], array('/site/view/'.$user['id'])); ?></li>
            <li><?php echo ($user['online'] != null)? 'online' : 'offline'; ?></li>
        </ul>
    </li>
    <?php 
    }
?>
</ul>
</div>

How can I do this ? I use Yii 1.1.

  • 写回答

1条回答 默认 最新

  • weixin_33709219 2015-06-04 11:07
    关注

    Here a small example. I hope this help you. Widget which show time from server every second.

    //SiteController
    public function actionTest()
    {
        $this->render('my_view'); //just rendering view
    }
    
    public function actionContent()
    {
        $this->widget('time'); //return html of widget. use for ajax
    }
    
    //my_view.php
    <script src="<?php echo  $this->assetsBase ?>/js/jquery-1.10.2.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            setInterval(function() {
                $.get('/site/content', {}, function(data) {
                   $('#widget').html(data);
                });
            }, 1000); //update widget content every second
        });
    </script>
    <div id="widget">
        <?php $this->widget('time'); // render widget  ?>
    </div>
    
    //widget
    class Time extends CWidget
    {
        public function init(){
    
        }
    
        public function run(){
            $date = new DateTime();
            $this->render("test", array('time'=>$date->format('H:i:s')));
        }
    
    }
    
    //view for widget test.php
    <p><?= $time ?></p>
    
    评论

报告相同问题?

悬赏问题

  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图