【发布时间】:2014-07-17 16:27:40
【问题描述】:
我正在使用 jQuery 的 $.ajax() 函数来提交表单。我像这样传递表单数据:
data: form.serialize()
但是,我想向 POST 请求添加其他数据。
根据this answer,这样做的方法是在表单上使用serializeArray(),然后将数据推送到生成的对象数组上。问题是当我尝试序列化结果数组时,jQuery 返回错误。
这是一个例子:
<form id="test">
<input type="hidden" name="firstName" value="John">
<input type="hidden" name="lastName" value="Doe">
</form>
JS:
console.log($("#test").serialize()); // firstName=John&lastName=Doe
var data = $("#test").serializeArray();
console.log(data); // [Object, Object]
data.push({name: 'middleName', value: 'Bob'});
console.log(data); // [Object, Object, Object]
console.log(data.serialize()); // Uncaught TypeError: undefined is not a function
我做错了什么?
【问题讨论】:
-
你为什么要打电话给
serialize?只需按照链接答案中的示例代码进行操作即可。在你的 AJAX 调用中使用data,它就准备好了。喜欢data: data。 -
您是否尝试在
.push()之后在您的ajax 调用中使用数据;你不应该尝试序列化数组。 -
@kapa 我为
$.ajax()找到的示例显示数据作为form.serialize()传递,它将输入放入字符串中(就像GET 请求一样)。这就是为什么我试图在数组上调用serialize(),将其转换为字符串。 -
你也可以使用 JSON jsfiddle.net/hqj4E/1
-
@Nate 只需阅读文档而不是盲目地遵循示例。或者盲目地遵循示例,并简单地从链接问题的答案中复制它。这两种方法都适用于这种情况:)。
标签: javascript jquery ajax forms