cakePHP使用ajax提交表单

时间:2014-06-12 18:22:20

标签: jquery ajax json cakephp cakephp-2.5

我正在提交带有ajax的表单,我正在尝试返回json响应。问题是我找回了缺失的观点。当我添加autoResponder = false时,我什么都没得到。我正在使用cakephp 2.5

我在同一个控制器中有另一个动作,我可以得到一个json响应。我使用标准的ajax调用。与此操作的区别在于我正在使用带有multipart的表单数据。在另一个ajax调用中,我能够将扩展名.json添加到url中,告诉cakephp使用该路由。

当我将.json添加到表单操作URL时,我得到一个回复​​缺失操作。

<form action="/btstadmin/pages/ajax_edit.json/3" id="ajax_editJsonForm" enctype="multipart/form-data" method="post" accept-charset="utf-8">

回复

The action <em>ajax_edit.json</em> is not defined in controller <em>PagesController

我的行动是

public function ajax_edit() {

    if ($this->request->is('ajax')) {
        if ($this->Page->save($this->request->data)) {
            $this->RequestHandler->respondAs('json');
            $this->set("status", "success");
            $this->set("message", "All pages re-ordered");
            $this->set("_serialize", array("status", "message"));

我的其他动作适用于:

$.ajax({
        url: "/btstadmin/pages/reorder.json",
        type: "post",
        dataType:"json",
        data: neworderSer,

我的行动给出了json回复

public function reorder() {
    if ($this->Page->saveMany($data)) {
        $this->set("status", "sucess");
        $this->set("message", "All pages re-ordered");
        $this->set("content", $data);
        $this->set("_serialize", array("status", "message", "content"));

更新

我更改了表单create

$formaction = '/pages/ajax_edit/'.$this->data['Page']['id'].'.json';
echo $this->Form->create('Page', array('type' => 'file', 'url' => $formaction));

1 个答案:

答案 0 :(得分:1)

您的表单的操作网址应为/btstadmin/pages/ajax_edit/3.json而不是/btstadmin/pages/ajax_edit.json/3。网址扩展名应始终位于网址的末尾。