php - Codeigniter Twitter样式流和Ajax

原文 标签 php jquery ajax codeigniter twitter-bootstrap

我一直在网上寻找以下解决方案,希望有人能指出正确的方向。

我有一个在Codeigniter中构建的Web应用程序,主视图从模型的帖子流中加载。当前,用户必须刷新页面以获取最新内容,这并不理想,我要实现的是流div定期更新并加载新内容。

我是CI和Ajax的新手,我想知道是否有人可以提供解决方案。

一些代码...

模型

    function stream($uid, $updated, $limit) {
        $this->db->cache_on();
        $now = microtime(true);
        //$sql = "SELECT STATEMENT HERE";
        $query = $this->db->query($sql, array($uid, $uid, $updated, $limit));

        return $query->result();
    }


控制者

   function index() {
        if($this->session->userdata('logged_in')) {

            $session_data = $this->session->userdata('logged_in');
            $data['username'] = $session_data['username'];
            $data['first_name'] = $session_data['first_name'];
            $data['last_name'] = $session_data['last_name'];
            $data['avatar'] = $session_data['avatar'];
            $data['cover'] = $session_data['cover'];

            //Stream Data
            $updated = microtime(true);
            $limit = 100;
            $data['user_id'] = $session_data['id'];

            $this->load->library('pagination');

            $config['base_url'] = BASE_URL;
            $config['total_rows'] = $limit;
            $config['per_page'] = 10;
            $config['num_links'] = 20;

            $this->pagination->initialize($config);

            //$this->load->model('post');
            $data['results'] = $this->post->stream($data['user_id'], $updated, $limit);
            $data['notifications'] = $this->user->notifications($data['user_id']);
            $data['userStats'] = $this->user->getUserStats($data['user_id']);

            $this->load->view('home_view', $data);
            //$this->output->cache(1);
            //$this->output->enable_profiler(FALSE);
        } else {
            //If no session, redirect to login page
            redirect('/', 'refresh');
        }
    }


该视图很复杂,但从本质上讲,它对$results数组使用foreach循环,然后将键放入bootstrap div中,例如

<div class="row">
  <div class="col-sm-12">
    <div class="panel panel-default">
      <div class="panel-heading">
    <img src="<?php echo $user_avatar;?>" class="postAvatar">
    <h4><?php echo $user_full_name;?><br><small><i class="fa fa-map-marker"></i> <?php echo $relDate.' from '.$post_location ?></small></h4>
      </div>
      <div class="panel-body bodyText">
    <div class="postBody">
          <?php echo $formatted;?>
    </div>
      </div>
     </div>
   </div>
</div>

最佳答案

我强烈建议您看一下HTML5中引入的WebSocket technique。它是为诸如newsticker之类的东西而专门开发的。

还有一个用于支持跨浏览器的websocket库,称为socket-io

也许您也对this漂亮的jquery插件感兴趣。

HTML5 FTW!

关于php - Codeigniter Twitter样式流和Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22170817/

相关文章:

php - jQuery警报不起作用

javascript - 尝试生成一个临时txt文件,然后将其删除

javascript - 结果以第一个ajax顺序排列,但内部for循环顺序随机更改。为什么?

javascript - jquery 文本旋转

javascript - 使用Jquery方法将div的CSS位置从绝对更改为固定

c# - Linq to SQL获取多列

ajax - Postcodes.io 批量查找

mysql - 解决 "MySQL server has gone away"错误

php - linux lamp需要文件

php - 如何在WordPress中覆盖get_post函数?