通过AJAX jQuery表单提交发送表单数据(字符串)和数组

时间:2015-11-02 11:57:26

标签: javascript jquery ajax forms

我已经研究了几个类似的答案,但是我找不到任何能够显示如何发送两个数组,字符串。

我发现.serialize.serializeArray应该允许我构造我需要将表单数据和数组发送到我的PHP脚本所需的字符串,但我无法理解使用它们的语法这些功能在一起。

我的表格很简单:

<form id="email-input">
   <input type="email" name="user-mail" />
</form> 

我希望使用AJAX提交,并将形式的值发送到我的PHP脚本中,名为basketData的javascript数组。

$.ajax({
            type: "POST",
            url: "scripts/send-mail.php",
            data: {$("#email-input").serialize(),basketData.serializeArray()}
            success: function(data)
            {
                console.log(data);
            }
        });

我知道上面的语法完全不正确,但我无法弄清楚如何通过这个函数传递多个数据值。

2 个答案:

答案 0 :(得分:0)

<强> jQuery的:

$.ajax({
    type: "POST",
    url: "scripts/send-mail.php",
    data: {
        email: $('input[name="user-mail"]').val(),
        basketData: basketData
    }
    success: function(data) {
        console.log(data);
    }
});

<强> PHP:

$email = $_POST['email'];
$basketData = $_POST['basketData'];

答案 1 :(得分:0)

serializeArray用于将包含表单的jQuery对象转换为结构化数据,作为将其转换为序列化字符串的前体。直接调用它很少有用,并且无法在数组上调用(otherData:basketData.serializeArray()}将抛出一个数组,因为serializeArray未定义,因为basketData不是jQuery对象) 。

serialize用于将包含表单的jQuery对象转换为表单编码数据的字符串。它非常适合处理复杂的表格。当您想要修改数据时,它会变得有些繁琐。

忘记使用它们中的任何一个。

data的{​​{1}}参数接受一个JavaScript对象作为其值,然后jQuery将使用PHP的复杂数据结构约定将其编码为表单数据(因为你说的很好用)你的数组不是平的,你使用的是PHP。)

只需将表单控件的数组和放入数据对象中。

.ajax