Codeigniter 刷新区

Posted

技术标签:

【中文标题】Codeigniter 刷新区【英文标题】:Codeigniter Refresh Div 【发布时间】:2016-11-27 16:49:59 【问题描述】:

我不明白如何使用 jQuery 刷新 div 中的数据,我知道它的外观,但我不知道如何将它包含在我的代码中。

这是我的控制器:

$data['chats'] = $this->core_model->getLastChats();
$this->loadTemplate('pages', 'index_view', $data);

这是我的看法:

public function getLastChats()

    $this->db->select('*');
    $this->db->limit(150);
    $this->db->order_by('c_date', 'DESC');
    $this->db->join('users', 'users.u_id = chat.c_author');
    $query = $this->db->get('chat');

    return $query->result();

这是我的观点:

<?php foreach($chats as $chat)  ?>
    <div class="media">
        <div class="media-left">
            <img class="media-object" style="width: 32px;" src="<?php echo $chat->u_avatar; ?>">
        </div>
        <div class="media-body">
            <h5 class="media-heading"><strong><?php echo $chat->u_name.' '.$chat->u_surname; ?></strong></h5>
            <?php echo $chat->c_message; ?><br />
        </div>
    </div>
<?php  ?>

【问题讨论】:

PHP 在页面之前加载,如果你想读取数据并显示在页面上,你必须使用 XMLHttpRequest (XHR) 在后台检索所需的数据。 谢谢你的回复,你能给我举个例子吗? 看看这个函数,想想你怎么能使用在你的站点中检索到的数据:api.jquery.com/jquery.get 【参考方案1】:

这是一个老问题,但由于这个基本问题没有答案,我决定回答它。

首先,要使用 jQuery 从 DB 中获取数据,应该在您的视图中调用 Ajax。

因此您可以在视图中添加以下 javascript 代码,包括要显示数据的 div。

或者你可以添加一个额外的js文件。

你的看法:

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

还有你的_jsfile.js:

$(function() 
    
    ......
    var controller_function_url = site_url + 'your_controller/your_function'
    $.post(controller_function_url, function(resp)
        resp = JSON.parse(resp);
        var html = "";
        if(resp.status)
             for(I = 0; I < resp.body.chat.length; i++)
                 var item = resp.body.chat[i];
                 HTML += "<div class="media">";
                 html += "<div class="media-left">";
                 HTML += "<img class='media-object' style='width: 32px;' src='" + item['u_avatar'] + "'></div>";
                 HTML += "</div>"
                 ...............
             

             $(your_parent_div).html(html);
        
       
    );
    
    ........
);

您的控制器:(通过 ajax 调用)

   public function your_function()
        $data['chats'] = $this->core_model->getLastChats();
        $resp['status'] = true;
        $resp['body'] = $data;
        echo json_encode($resp);
    

你的初始控制器(显示视图)

   $data['chats'] = array();//empty array
   $this->loadTemplate('pages', 'index_view', $data);

这样您在页面的初始加载时显示一个空列表。

页面加载后,我们通过 ajax 调用从数据库中获取数据列表并显示它而不是空列表。

您可以通过在需要刷新时调用此 ajax 调用来保持列表最新。

【讨论】:

以上是关于Codeigniter 刷新区的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter 3 会话在页面刷新后销毁

如何在CodeIgniter中刷新当前页面

刷新当前页面-CodeIgniter

PHP 如何在CodeIgniter中刷新当前页面

PHP 刷新当前页面 - CodeIgniter

错误:无法检索请求的 URL