AJAX - 传递整个表单+表单外的一个或多个数据

时间:2017-06-13 07:01:46

标签: php jquery ajax forms

我知道如何将整个表单传递给AJAX。

data: $(this).serialize()

但是,我不知道如何在表单外传递表单+值。

例如:

var id = $('[name="formid"]').attr("id");
var uniq = $('[name="formid"]').data('uniquecode');

data: {form: $(this).serialize(), id: id, uniq: uniq},

这样可行,但表单会变成查询字符串而不是数组。

Array ( [form] => fullname=&contactnum=&email=&source= )

应该是这样的:

Array ( [fullname] => [contactnum] => [email] => [source] => )

有人帮我做这个吗?感谢。

2 个答案:

答案 0 :(得分:3)

如您所见 - serialize()返回简单字符串,这就是为什么您可以将其与所需值连接起来的原因:

data: $(this).serialize() + "&id=" + id + "&uniq=" + uniq,

另一种解决方案是在表单上创建具有所需值的隐藏输入:

<input type="hidden" name="id" value="your value" />
<input type="hidden" name="uniq" value="your other value" />

然后他们也会serialize d,而不做任何其他事情。

答案 1 :(得分:1)

您可以通过多种方式获得解决方案。 Serialize返回字符串,以便您可以连接为

data: $(this).serialize() + "&id=" + id + "&uniq=" + uniq,

您可以单独传递ajax中数据的值

    var id = $('[name="formid"]').attr("id");
var uniq = $('[name="formid"]').data('uniquecode');
    $.ajax({
       url:'',
       data : {
         data : data,
         id : id,
         uniq : uniq,
       },
    });

您可以将隐藏字段用作

<input type="hidden" name="id" value="your value" />
<input type="hidden" name="uniq" value="your other value" />

如果你正在传递

data: {form: $(this).serialize(), id: id, uniq: uniq},

你可以使用parse_str

在php的后端获取数组