我读了很多文章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,而您目前没有这样做。