【发布时间】:2012-06-11 20:04:00
【问题描述】:
我正在使用$.ajax 提交表单,但我想在提交中添加一些不属于表单输入的键值对。连接这些额外参数的技术效果很好,但似乎不如使用$.extend 优雅。问题是我无法让后者工作。
这行得通:
var data = $form.serialize() + "&a=1&b=0.5";
这不是:
var data = $.extend({}, $form.serialize(), {
a: 1,
b: 0.5
});
当我检查提交的内容时,我可以看到我有三个键值对:
t:test
a:1
b:0.5
其中t 是单个表单输入字段(文本框)的名称。
当我使用$.extend 函数时,检查显示以下内容:
0:t
1:=
2:t
3:e
4:s
5:t
a:1
b:0.5
我的应用程序不喜欢这个请求。这种行为是意料之中的还是有人可以指出我做错了什么?
【问题讨论】:
-
var data = $.extend($form.serialize(), { a: 1, b: 0.5 });能为您做什么? -
我以为
.serialize总是返回一个字符串 -
@Mark Schultheiss:这似乎忽略了表格中的任何内容,因此实际上只有
a和b在发布请求中,没有其他内容。我尝试交换它们,但结果与我的问题中描述的相同。 -
我认为这是因为 extend 需要一个对象而不是字符串,因此它为字符串数组中的每个“对象”创建一个对象,从而扩展您原来的空对象
{}
标签: jquery form-submit