0

我不想使用 CakePHP 的 FormHelper,因为我想在我的应用程序中使用一些 Ajax。如何将表单中的数据传递给控制器​​?我$.post从 jQuery 使用,但我总是得到一个错误。谢谢!

4

2 回答 2

2

您可以将 Ajax 与 CakePHP 表单助手一起使用。

在您的视图文件 .ctp 中放置:

echo $this->Form->create('Model', array('id'=>'YourFormId', array('default'=>false)));
echo $this->Form->input('field');
echo $this->Form->submit('Save');
echo $this->Form-->end

请注意您的表单->创建您传递的默认值 => false,它告诉表单不要执行正常的“提交”。

在视图文件 .ctp 的底部放置:

$data = $this->Js->get('#YourFormId')->serializeForm(array('isForm' => true, 'inline' => true));
$this->Js->get('#YourFormId')->event(
  'submit',
   $this->Js->request(
      array('action' => 'yourAction', 'controller' => 'yourController'),
      array(
        'update' => '#flash',
        'data' => $data,
        'async' => true,    
        'dataExpression'=>true,
        'method' => 'POST'
        )
      )
     );
    echo $this->Js->writeBuffer(); 

以上就是 CakePHP 的 JS 助手,帮助你编写 Ajax 和 Javascript 中的 PHP。它基本上抓取正在提交的表单数据并将其序列化并通过 ajax 将其传递给 /yourcontroller/youraction。update=>#flash 告诉Cake 在操作完成后更新#flash div。

请记住在您的控制器中公开

public $helpers = array('Js');
public $components = array('RequestHandler'); 
于 2013-10-07T04:43:45.237 回答
0

-- jQuery --

$.post('<?=$this->Html->url(array('controller'=>'xxx','action'=>'yyy'))?>', {a:1,b:2});

-- cakePHP --

    function yyy() {
       $a = $this->request->data['a'];
       $b = $this->request->data['b'];
    }
于 2013-10-07T04:17:28.113 回答