我已经走过很多文章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充电。
提前感谢您的帮助
答案 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,此时您还没有这样做。