为ajax帖子序列化多个CakePHP formhelper表单

时间:2014-12-31 01:43:13

标签: php ajax cakephp

我遇到过这样一种情况:我已经建立了一个包含标签视图的已构建用户界面,其中每个标签包含使用CakePHP formhelper生成的表单。这些表单中的每一个都有自己的id,而前开发人员daisy在单个提交上链接了每个表单的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) {}
});

然而,在它发布的终点我似乎从$ this-> request-> data获得一个空数组;而当我序列化单个表单时,它返回了我的所有表单值。

我也没有在控制器中获得$ _POST中的任何内容,因此它似乎在它到达之前被擦除了。

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

1 个答案:

答案 0 :(得分:1)

我设法让这个像这样工作:

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();
}

我的问题似乎与在js端正确获取请求格式有关,就像在CakePHP控制器端访问它一样。