1

ajax を含むページを含む codeigniter アプリを作成しました。私は ajax ページが実際に機能していることを自分自身に証明しようとしています。つまり、私のページの 1 つのセクションだけが更新され、残りはそのままです。

コントローラーのコードは次のとおりです。

       public function index()
       {
           $this->load->model('locations_model');
           $data['clienthistory'] = $this->locations_model->get_locations();
           $data['main_content'] = 'dashboard';
           $this->load->view('includes/template', $data);
       }


       public function index2()
       {
          $this->load->model('locations_model');
          $data['clienthistory'] = $this->locations_model->get_locations();
          return json_encode($data['clienthistory']);                                                                     
       }

そして、ここに私の見解があります:

 <h2>timer test</h2>
    <?php echo now();?>

<h2>Latest Client Status</h2>
            <?php echo form_open('Dashboard/index');          
            echo form_submit('submit', 'Refresh Client Data', 'id="clientsubmit" class="btn-primary"');
            ?>
      <div class="row-fluid">
             <div class="span12" id="ajaxcontainer">
               <table class="table table-bordered table-striped">
                <thead>
                 <tr>
                   <th>IP</th>                                                                                                          
                   <th>Name</th>                                                                           
                   <th>Last Updated</th>
                 </tr>
                 </thead>
                <tbody>
               <?php foreach ($clienthistory as $histitem): ?>
                    <tr>
                        <td><?php echo $histitem['network'] ?></td>
                        <td><?php echo $histitem['name'] ?></td>
                        <td><?php echo $histitem['lastupdated'] ?></td>
                    </tr>
               <?php endforeach ?>

                </tbody>
               </table>
       </div>

     <?php echo form_close();  ?>
     <script type="text/javascript">
        $('#clientsubmit').click(function() {                   
               $.ajax({                                
                    url:"<?php echo site_url('Dashboard/index2'); ?>",
                    type: 'POST',
                    dataType: 'html'
                    success: function(returnDataFromController) {
                          $('#ajaxcontainer').html(returnDataFromController)
                    }
                  });

       return false;      
     });
    </script>

アイデアは、ページの現在の時刻を、私の ajax 呼び出しによって更新されないはずの領域に表示することです。しかし、更新ボタンをクリックすると、テーブル データが更新されるだけでなく、時刻も更新されます。なぜこれが起こっているのか理解できません。任意の助けをいただければ幸いです。codeigniter と ajax の初心者です。ありがとう。

4

1 に答える 1

1

ボタンは であるsubmitため、クリックするとページが更新されます。

<a></a>次のように、アクションを追加するなど、別のものに変更する必要があります。

<a href="#" id="clientsubmit" class="btn btn-primary">Refresh Client Data</a>

btntwitter ブートストラップを使用しているため、リンクがクラスに追加されたレイアウトを台無しにすることはありません。

ボタンがないsubmitと、ページは更新されず、日付機能は損なわれません。

念のため、リクエストが返されるまで、クリックされたときにそのリンク/ボタンを無効にします。

$('#clientsubmit').click(function() {
$(this).attr("disabled", "disabled");
...
$('#ajaxcontainer').html(returnDataFromController);
$(this).removeAttr("disabled");
...

そして、ajax 呼び出しでは、ajaxcontainer要素を更新するだけです。

それが役に立てば幸い。

于 2012-06-12T18:16:52.147 に答える