1

我正在尝试在 cakephp 中发送一个简单的 ajax 请求。我必须为许多按钮发送 ajax 请求。但我只是先尝试​​一个简单的 ajax 请求。但由于某种原因它不起作用。这是我到目前为止所做的。这是我的代码。

显示.ctp

<?php echo $this->Html->script('jquery', FALSE); ?>

<?php

echo $this->Form->create();
echo $this->Form->input('field', array('id'=>'field'));
echo $this->Js->submit('Send', array(
'before'=>$this->Js->get('#sending')->effect('fadeIn'),
'success'=>$this->Js->get('#sending')->effect('fadeOut'),
'update'=>'#success'
));

?>

<div id='sending' style="display:none"> Counz[dot]gif will be displayed </div>
<div id='success'></div>

控制器

var $name = 'count';

    public $helpers = array('Js' => array('Jquery'));
    //var $helpers = array('Ajax', 'Javascript');
    var $components = array('RequestHandler');

public function show(){
        if($this->RequestHandler->isAjax()){
            $this->render('success', 'ajax'); //ajax tells the layout it should use

        }else{
            $this->set('for_map', $this->count->find('all'));

        }
    }

成功.ctp

<p>It's working</p>

默认情况下还有 ajax.ctp。

请告诉我我做错了什么。谢谢。:)

4

2 回答 2

0

做ajax请求的时候最好不要post到self。

显示.ctp

echo $this->Form->create('Count', array('action'=>'ajaxShow'));

控制器

public function ajaxShow(){

    $this->layout = 'ajax';


    if($this->RequestHandler->isAjax()){
         $this->render('success', 'ajax'); //ajax tells the layout it should use
    }
}
于 2013-03-06T13:36:11.490 回答
0

我知道这个线程很老,但我会分享我的答案。你可以做普通的ajax调用,例如你的url是'users/items'类型是GET然后在你的:

用户控制器.php

public function items(){
 // some logic to get items
 $this->set('items',$items);
 $this->layout = null; //remove default layout.
 $this->render('ajax/items'); // here I use View/Users/ajax/items.ctp
}

项目.ctp

//you can return json
<?php echo json_encode($items); ?>

//or

//your own format
<?php 
 foreach($items as $item){
      //some output
 }
?>

现在 items.ctp 中的输出将在您的 js 的成功属性中。只需确保解析返回的 json。

于 2017-07-20T08:41:04.653 回答