在这种情况下,我已经收到了一个已经构建好的用户界面,其中包含一个选项卡视图,其中每个选项卡都包含一个使用CakePHP表单助手生成的表单。这些表单中的每一个都有自己的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) {}
});但是,在它发布到的端点上,我似乎从$this->request->数据中得到了一个空数组;而当我序列化单个表单时,它返回了我的所有表单值。
我在控制器中一次也没有在$_POST中得到任何东西,所以它似乎是在到达控制器之前被擦干净的。
有没有办法将多个表单放到一个ajax帖子中,然后在另一端保存它们呢?
发布于 2015-01-01 13:57:47
我成功地做到了这样工作:
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控制器端访问请求有关。
https://stackoverflow.com/questions/27715118
复制相似问题