requesthandlercomponent

requesthandlercomponent

我在我的视图中有代码,但是通过ajax发送到我的控制器操作(如add.ctp的最后一部分所示)

//add.ctp
 <?php
  echo $this->Form->create('Poll',array('action' => 'index'));
  echo $this->Form->input('one', array('id'=>'name'));
  echo $this->Form->input('two', array('id'=>'email'));
  echo $this->Form->input('three', array('id'=>'message'));
  echo $this->Form->input('four', array('id'=>'four'));


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

<div id="sending" style="display: none; background-color: lightgreen;">Sending...</div>
<script>



 $('#btn').click(function(event) {

 form = $("#PollIndexForm").serialize();

  // console.log(form);
 $.ajax({
   type: "POST",
   url: 'pollsController/index';,
   data: form,

   success: function(data){
      //
   }

 });

 event.preventDefault();
// return false;  //stop the actual form post !important!

});

</script>


在到达控制器时,我进行了isAjax请求测试,如果失败

public $components = array('RequestHandler');

public function index(){
$this->autoRender = false;

      if($this->RequestHandler->isAjax()){
    echo debug('Ajax call');

       }
     if(!empty($this->data)){
       echo debug('not empty');
      }
}


每当我尝试运行此命令时,我都会得到“不为空”的消息,并且$this->request->is('ajax')始终为false
我的cakephp版本是2.3,我已经尝试过$this->request->is('ajax')等等。
如果有人能指出我错过的地方,我将不胜感激

最佳答案

在您的代码中,您有

if($this->RequestHandler->isAjax()){


尝试通过以下方式创建条件:

if ($this->request->is('ajax')) {

}


http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html?highlight=isajax#requesthandlercomponent


  RequestHandlerComponent:许多RequestHandlerComponent的方法是
  只是CakeRequest方法的代理。以下方法是
  不推荐使用,并将在以后的版本中删除:isSsl()isAjax()
  isPost()isPut()isFlash()isDelete()getReferer()getClientIp()

09-17 00:53