为ajax post序列化多个CakePHP formhelper表单

为ajax post序列化多个CakePHP formhelper表单,php,ajax,cakephp,Php,Ajax,Cakephp,我遇到过这样一种情况:我得到了一个已经构建好的用户界面,其中包含一个选项卡式视图,其中每个选项卡都包含一个使用CakePHP formhelper生成的表单。这些表单中的每一个都有自己的id,前开发人员在一次提交中以菊花链的方式为每个表单发送ajax请求 客户端仍然希望同时发布所有表单,因此我希望可以像这样序列化多个表单: var post_data = $("#form-1, #form-2").serialize(); $.ajax({ type: "POST", url:

我遇到过这样一种情况:我得到了一个已经构建好的用户界面,其中包含一个选项卡式视图,其中每个选项卡都包含一个使用CakePHP formhelper生成的表单。这些表单中的每一个都有自己的id,前开发人员在一次提交中以菊花链的方式为每个表单发送ajax请求

客户端仍然希望同时发布所有表单,因此我希望可以像这样序列化多个表单:

var post_data = $("#form-1, #form-2").serialize();
$.ajax({
    type: "POST",
    url: "/places/save_form",
    data: post_data,
    success: function(result) {},
    error: function(result) {}
});
var post_data = { };
post_data.FormOne = $("#form-1").serialize();
post_data.FormTwo = $("#form-2").serialize();

$.ajax({
    type: "POST",
    url: "/places/save_form",
    data: post_data,
    success: function(result) {
        $(loading_div).remove();
    },
    error: function(result) {
        $(loading_div).remove();
    }
});
然而,在它发布到的最后一点,我似乎从$this->request->data得到了一个空数组;而当我序列化单个表单时,它返回了我所有的表单值

在控制器中,我也没有在$u POST中得到任何东西,因此它似乎在到达那里之前被擦洗过


有没有办法将多个formhelper表单放到一个ajax帖子中,然后将它们保存到另一端?

我成功地实现了如下操作:

var post_data = $("#form-1, #form-2").serialize();
$.ajax({
    type: "POST",
    url: "/places/save_form",
    data: post_data,
    success: function(result) {},
    error: function(result) {}
});
var post_data = { };
post_data.FormOne = $("#form-1").serialize();
post_data.FormTwo = $("#form-2").serialize();

$.ajax({
    type: "POST",
    url: "/places/save_form",
    data: post_data,
    success: function(result) {
        $(loading_div).remove();
    },
    error: function(result) {
        $(loading_div).remove();
    }
});
在控制器端:

public function save_form() {
    $FormOne = $this->request->data['FormOne'];
    $FormOneValues = array();
    parse_str($FormOne, $FormOneValues);

    $FormTwo = $this->request->data['FormTwo'];
    $FormTwoValues = array();
    parse_str($FormTwo, $FormTwoValues);

    echo '<pre>'; 
    print_r($FormOneValues);
    print_r($FormTwoValues);
    die();
}
公共函数保存表单(){
$FormOne=$this->request->data['FormOne'];
$FormOneValues=array();
parse_str($FormOne,$FormOneValues);
$FormTwo=$this->request->data['FormTwo'];
$FormTwoValues=array();
parse_str($FormTwo,$formtwowalues);
回声';
打印(FormOneValues);
打印(FormTwoValues);
模具();
}

我的问题似乎与在js端正确格式化请求以及在CakePHP控制器端访问请求有着同样多的关系。

您可以使用CakePHP js helper@AlimonKarim-我在CakePHP 3上,它说已经删除了。您是否发现其中有一些特定的内容可以在一个ajax请求中容纳多个表单?将
数据:post\u data,
更改为
数据:dataString,
?对于我的代码片段中的不准确,我深表歉意。我仔细检查了我的代码,在这两个地方使用了相同的var。我只是在两个不同的时间粘贴代码片段时搞砸了。我已经在这里更新了这个片段。