Ajax搜索表格Div分页 - PHP - CakePHP

时间:2014-09-19 06:21:10

标签: javascript php ajax cakephp pagination

我已经走过很多文章Stack OverFlow,但没有一个解决了我的问题。我只想使用带有Cake php的Ajax来刷新包含我的分页结果的DIV。

注意: 我包含了jQuery库。 我调用了RequestHandler组件:

public $components = array('RequestHandler');

public function beforeFilter() {
    if($this->RequestHandler->isAjax()){
        $this->layout=null;
        Configure::write('debug', 0);
    }
}

我检查过" ajax.ctp"在布局文件夹

这是我的搜索功能:

public function searchIndex(){
        //debug($this->request->data); die;

        $search = $this->request->data['Concessionnaire']['search'];

        $this->Paginator->settings = array(
            'conditions' => array('Concessionnaire.ville LIKE' => '%'.$search.'%'),
            'limit' => 5
        );
        $data = $this->Paginator->paginate('Concessionnaire');
        $this->set('concessionnaires', $data);
        $this->render('index');

    }

观点:

<div class="row">
    <div class="large-12 columns">
        <div class="panel">
            <h4>Recherchez une ville :</h4>
            <?php echo $this->Form->create('Concessionnaire',array('id' => 'textBox', 'type' => 'post','url' => array('controller' => 'concessionnaires', 'action' => 'searchIndex'))); ?>
            <?php echo $this->Form->input('search', array('label'=>"",'placeholder'=>'Tapez le nom d\'une ville, puis la touche Entree de votre clavier' ,'id'=>'search')); ?>
            <?php echo $this->Form->end(); ?>
        </div>
    </div>
</div>      

<div class="row">
    <div class="large-12 columns">
        <div class="panel" id="conssR">
            <!-- generation vignettes -->
            <?php foreach ($concessionnaires as $concessionnaire): ?>
                <div class="panel conssPanel radius"> 
                    <h4><b><?php echo h($concessionnaire['Concessionnaire']['nom']); ?></b></h4>
                    <div class="row">
                        <div class="large-6 columns" style="padding-left: 70px; font-size: 20px;">
                            <?php echo h($concessionnaire['Concessionnaire']['adresse']); ?><br>
                            <?php echo h($concessionnaire['Concessionnaire']['cp']); ?>
                            <?php echo h($concessionnaire['Concessionnaire']['ville']); ?>
                        <!-- <p>It's a little ostentatious, but useful for important content.</p> -->
                        </div>
                        <div class="large-6 columns" style="font-size: 20px; text-align: center;">
                            Tel: <?php echo h($concessionnaire['Concessionnaire']['tel']); ?><br>
                            Site:  <?php echo h($concessionnaire['Concessionnaire']['website']); ?>
                        </div>  
                    </div>

                    <?php
                        // $map_id = "map_canvas";
               //           $marker_id = 1;
               //           $position = "rue du depot, 62000 ARRAS";
               //           echo $this->GoogleMap->addMarker($map_id, $marker_id, $position);
                    ?>
                </div>
            <?php endforeach; ?>
        </div>
    </div>    
</div>

我想重新加载DIV&#34; #conssR&#34;将字符串结果输入表格&#34; Concessionnaires&#34;。现在,当我写一些有效的东西时,控制器通过刷新页面向我显示结果,但我只想给DIV充电。

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

   $this->Paginator->options(array(
        'update' => '#conssR',
        'evalScripts' => true
    ));

上面的代码不是函数的一部分,它是View文件夹中视图文件的一部分,它创建了适当的JavaScript来更新div。

检查:http://book.cakephp.org/2.0/en/core-libraries/helpers/paginator.html 它是您的视图中的帮助程序和帮助程序代码

  if($this->request->is('ajax'))
  {
       $this->render('/Elements/ajax');
  }

上面的代码用于渲染View / Elements文件夹中的ajax.ctp,此时您还没有这样做。