我遇到过这样一种情况:我已经建立了一个包含标签视图的已构建用户界面,其中每个标签包含使用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帖子中然后处理另一端保存它们?
答案 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控制器端访问它一样。