我有一个非常复杂的html表单,由10个以上的普通输入字段组成,还有一个动态行条目,用于创建一系列事物。想象一下,有一个包含个人详细信息的表单,用户还可以添加包含家庭成员详细信息的额外行。
我需要能够发送两个块'数据到PHP。一个简单的$('#myForm').serialize();
不会这样做,因为第二个块必须作为一系列事物发送。
我面临的问题是......
当我以这种方式发送表单值时:
var frm_data = $('#myForm').serialize();
$.ajax({
"url": "request.php?action=save",
"data": frm_data,
"type": "POST",
"success": function(data) {
var response = JSON.parse(data);
if(response.data == "error"){
//
}else{
//
}
}
});
我从表单中获取每个输入字段作为关联的php数组。因为具有动态行的第二个块没有唯一的name = values ...(唯一的区别是它们的<tr id=>
),所以我只得到最后一行的数据。
Array
(
[name] => George Blah
[address] => Str. 25
[zip] => 35510
...
[extra_name] => Maria
[extra_Tele] => 21214454
[extra_Mobil] => 111111
[extra_Email] =>
)
但我设法创建了一个包含所有&#39;额外&#39;的js数组。行,在我发送表单之前,我将它存储在一个变量中,我可以使用它。 问题是,当我将 BOTH (表单数据和第二个块数组)发送到php文件时,表单的数据不再是关联的数组。
var extra = [];
//After a pretty complex function,
//i have all the extra dynamic rows stored in this array
var frm_data = $('#myForm').serialize();
$.ajax({
"url": "request.php?action=save",
"data": {"form": frm_data, "extras": JSON.stringify(extra)} ,
"type": "POST",
"success": function(data) {
var response = JSON.parse(data);
if(response.data == "error"){
//
}else{
//
}
}
});
结果是这样的:
Array
(
[form] => name=George+Blah&address=Str+25&zip=35510&=email=&extra_name=Maria&extra_Tele=21214454&extra_Mobil=111111&extra_Email=
[extras] => [{"extra_name":"Maria","extra_Tele":"21214454","extra_Mobil":"111111","extra_Email":""}]
)
我需要&#39;表格&#39;价值看起来像&#39;额外&#39;值,在它到达php文件之前。我不想根据&#39;&amp;&#39;来打破发送到php的字符串。如果用户添加了以下内容,请签名:&#39; George&amp;玛丽&#39;因为名字,在那之后所有的地狱失败。
基本上我想要这个:
[form] => name=George+Blah&address=Str+25&zip=35510&=email=&extra_name=Maria&extra_Tele=21214454&extra_Mobil=111111&extra_Email=
是这样的:
[form] => [{"name":"George Blah","address":"Str 25","zip":"35510","email":"".....}]
我希望我明白。 :/
由于
答案 0 :(得分:0)
没关系,我是个白痴。
在php文件中,我所要做的就是:
parse_str($post["form"], $data);
现在$ data以我想要的格式保存所有$ _POST结果。