Javascript 使用基于Codeigniter的jQueryJava刷新html表

Javascript 使用基于Codeigniter的jQueryJava刷新html表,javascript,php,jquery,codeigniter,refresh,Javascript,Php,Jquery,Codeigniter,Refresh,伙计们,我有一个数据来自一个外包表,我在表中展示。我正在使用PHP函数解码并显示Json格式的原始数据 我一直在谷歌搜索自动刷新数据,发现了这个 我已经成功地构建了勾选答案中的建议,并且似乎是第一次工作,但没有刷新。所以当页面加载时 我打电话给你 $(document).ready (function () { var updater = setTimeout (function () { $('div#u

伙计们,我有一个数据来自一个外包表,我在表中展示。我正在使用PHP函数解码并显示Json格式的原始数据

我一直在谷歌搜索自动刷新数据,发现了这个

我已经成功地构建了勾选答案中的建议,并且似乎是第一次工作,但没有刷新。所以当页面加载时

我打电话给你

$(document).ready (function () {
                    var updater = setTimeout (function () {
                        $('div#user_table').load ('get_new_data', 'update=true');
                        /*  location.reload(); */
                    }, 1000);
                });
它从控制器文件加载名为get_new_data的函数并加载到

 <div class="container-fluid" id="user_table">

                       </div>

Codeigniter控制器功能不可用

 public function get_new_data(){

    $url = 'https://gocleanlaundry.herokuapp.com/api/users/';
    $result = $this->scripts->get_data_api($url);
    $data_row = $result;


                            $tbl    = '';
                            $tbl .= '<table class="table table-striped table-responsive" id="tableSortableRes">
                               <thead>
                                   <tr>
                                       <th>Name</th>
                                       <th>Email Address</th>
                                       <th>Role</th>
                                       <th>Status</th>
                                       <th>Action</th>
                                   </tr>
                               </thead>
                               <tbody>';

                                foreach($data_row as $row){
                                $tbl .= '<tr class="gradeX">
                                       <td>' . $row->name . '</td>
                                       <td>' . $row->email . '</td>
                                       <td>' . $row->role . '</td>
                                       <td><p id="' . $row->_id. '_status">'.( $row->alive == true ?  'Active' : 'Banned').' </p></td>
                                       <input id="' . $row->_id . 'status_val" value="' . $row->alive . '" type="hidden">
                                       <td class="center">

                                      <a href="#" id="' . $row->_id . '_rec" onclick="UpdateStatus(' . $row->_id . ')" class="btn btn-mini ">'
                                       . ($row->alive == '1' ? '<i class="fa fa-thumbs-o-up fa-fw"></i>' :  '<i class="fa fa-thumbs-o-down fa-fw"></i>' ) . '</a>
                                       </td>

                                   </tr>
                               ';
                                }
                                $tbl .= '</tbody>
                           </table>';

                                echo $tbl;

}
公共函数获取新数据(){
$url='1https://gocleanlaundry.herokuapp.com/api/users/';
$result=$this->scripts->get\u data\u api($url);
$data\U row=$result;
$tbl='';
$tbl='
名称
电子邮件地址
角色
地位
行动
';
foreach($data\u行作为$row){
$tbl='
“.$row->name。”
“.$row->电子邮件。”
“.$row->角色。”

”。($row->alive==true?'Active':'banked')。'

'; } $tbl=' '; echo$tbl; }
正如我所说,当页面加载显示数据时,有些东西正在工作,但当我向数据库添加新数据时,不会自动显示。我希望函数调用并刷新数据。抱歉,我对javascript和jQuery非常陌生,所以请对我放松:)


谢谢大家

要每15秒刷新一次(每分钟4次),您应该使用setInterval函数来代替setTimeout

您的代码如下所示:

$(document).ready (function () {
    var updater = setInterval (function () {
        $('div#user_table').load ('get_new_data', 'update=true');
    }, 25000);
});
编辑:但如果您希望确保页面不会过载,并且按照您的要求,先加载数据,然后定期刷新。您必须执行以下操作:

  • 第一次加载数据
  • 完成后,调用setTimeout以在25秒内刷新
  • 刷新页面时,调用SetTimeout以在25秒内刷新页面
  • 一次又一次
  • 这比使用setInterval要好。为此,必须使用jQuery加载函数的完整回调


    settimeout函数在l'y上调用一次。如果你想每1000毫秒调用一次刷新函数,你应该使用setinterval函数来代替settimeout。是的,但它仍然没有显示新的data@SébastienDoncker谢谢你,伙计,但我对Jquery真的很陌生,你能给我举个例子或者重写我的代码吗?请不要让它每秒钟都加载。一分钟4次对我来说也可以。我只想自动获取新数据是的,我在谷歌上搜索了setInterval,它对我有效:)@塞巴斯蒂安唐克你是明星谢谢你,还有一个问题。如何先加载,然后调用间隔。上面的情况是,在页面上显示数据需要很长时间load@Zee我只是编辑我的答案,告诉你怎么做。
    function refresh() {
        setTimeout(function() {
              $('div#user_table').load ('get_new_data', 'update=true', refresh);
        }, 25000);
    }
    
    $(document).ready (function () {
        $('div#user_table').load ('get_new_data', 'update=true', refresh);
    });