jquery ajax提交表单+额外数据,在php中检索结果

时间:2017-03-30 13:11:43

标签: php jquery ajax forms

我有一个非常复杂的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":"".....}]

我希望我明白。 :/

由于

1 个答案:

答案 0 :(得分:0)

没关系,我是个白痴。

在php文件中,我所要做的就是:

parse_str($post["form"], $data);

现在$ data以我想要的格式保存所有$ _POST结果。