jQuery   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了尝试使用jQuery序列化()表单数据并使用extend()追加更多变量大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用$.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

我的申请不喜欢这个请求.这种行为是预期的还是有人可以指出我做错了什么?

解决方法

你的问题是因为.serialize()仅适用于jQuery表单对象,并且.extend()内的序列化会将[object] [object]作为表单的值(因为这不是正确的方法).我提出两个解决方案:

第一解决方
克隆jQuery的表单,向其添加项目并序列化

var $form = $('#form').clone()
          .append('<input name="foo" value="1" />')
          .append('<input name="bar" value="2" />')
          .serialize();

解决方
使用表单的值填充对象,然后进行参数化

var data = $(foo:"value1",bar:"value2");
$('form').find(':input').each(function () {
    if (this.Name) {
        data[this.name] = this.value;
    }
});

data = $.param(data)

大佬总结

以上是大佬教程为你收集整理的尝试使用jQuery序列化()表单数据并使用extend()追加更多变量全部内容,希望文章能够帮你解决尝试使用jQuery序列化()表单数据并使用extend()追加更多变量所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。