我不想使用 CakePHP 的 FormHelper,因为我想在我的应用程序中使用一些 Ajax。如何将表单中的数据传递给控制器?我$.post
从 jQuery 使用,但我总是得到一个错误。谢谢!
问问题
3204 次
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 回答