为ajax post序列化多个CakePHP formhelper表单
我遇到过这样一种情况:我得到了一个已经构建好的用户界面,其中包含一个选项卡式视图,其中每个选项卡都包含一个使用CakePHP formhelper生成的表单。这些表单中的每一个都有自己的id,前开发人员在一次提交中以菊花链的方式为每个表单发送ajax请求 客户端仍然希望同时发布所有表单,因此我希望可以像这样序列化多个表单:为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:
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。我只是在两个不同的时间粘贴代码片段时搞砸了。我已经在这里更新了这个片段。