Ajax搜索表单分区分页-PHP-CakePHP



我读了很多文章Stack OverFlow,但没有一篇能解决我的问题。我只想使用Ajax和Cakephp来刷新包含分页结果的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"#conssR",其中包含以"特许权"形式输入的字符串结果。目前,当我写一些有效的东西时,控制器会通过刷新页面向我显示结果,但我只想给DIV.充电

提前感谢您的帮助

   $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,而您目前没有这样做。

最新更新