【问题标题】:jquery ajax submit form+extra data, retrieve results in phpjquery ajax提交表单+额外数据,在php中检索结果
【发布时间】:2017-08-24 10:35:15
【问题描述】:

我有一个非常复杂的 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= 值...(唯一的区别是它们的<tr id=>),我只得到最后一行的数据。

Array
(
    [name] => George Blah
    [address] => Str. 25
    [zip] => 35510
    ...
    [extra_name] => Maria
    [extra_Tele] => 21214454
    [extra_Mobil] => 111111
    [extra_Email] => 
)

但在我发送表单之前,我设法创建了一个包含所有“额外”行的 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":""}]
)

在到达 php 文件之前,我需要让“form”值看起来像“extras”值。我不想破坏基于“&”符号发送到 php 的字符串,以防用户添加类似:“George & Marry”的名称,然后所有的地狱都失败了。

所以基本上我想要这个:

[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":"".....}]

我希望我被理解。 :/

谢谢

【问题讨论】:

    标签: php jquery ajax forms


    【解决方案1】:

    没关系,我是个白痴。

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-08-18
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      • 2011-06-03
      • 2017-09-11
      相关资源
      最近更新 更多