serialize和serializeObject jquery之间的区别

com*_*mit 15 jquery

我搜索了很多,但没有找到jquery serialize和serializeObjectjquery方法之间的完美区别.

请帮我理解这个.

SpY*_*3HH 34

正如您在此处所看到的,serializeObject它不是本机jQuery方法,因此只有在您或该站点的先前程序员插入它时才存在.正如在此处发现的问答中所提到的,当有人在您的网站上工作时,可能会找到此功能searched a way to serialize a form并找到以下扩展名:

$.fn.serializeObject = function()
{
   var o = {};
   var a = this.serializeArray();
   $.each(a, function() {
       if (o[this.name]) {
           if (!o[this.name].push) {
               o[this.name] = [o[this.name]];
           }
           o[this.name].push(this.value || '');
       } else {
           o[this.name] = this.value || '';
       }
   });
   return o;
};
Run Code Online (Sandbox Code Playgroud)

寻找serializeObject你的JS中的某个地方,但请注意,它可能不需要,因为它似乎做同样的事情$.fn.serialize.


经过进一步审查,我发现它并不完全相同.serializeObject在其他问答环节中找到的方法会将表单的值序列化为Object,同时serialize将值编码为字符串以进行提交.

请注意,如果你想要的东西就像serailizeObject 是原产于jQuery的核心,那么请参阅serializeArray.

结果将略有不同,因为serializeArray它将构成表单值的对象数组.每个对象都有{ name: "", value: "" }

例

请参阅示例.Developer Tools Console


小智 5

我在stackoverflow上做了一些关于将表单序列化为json对象的挖掘,我最终找到了这个方法

$.fn.serializeObject = function()
{
   var o = {};
   var a = this.serializeArray();
   $.each(a, function() {
       if (o[this.name]) {
           if (!o[this.name].push) {
               o[this.name] = [o[this.name]];
           }
           o[this.name].push(this.value || '');
       } else {
           o[this.name] = this.value || '';
       }
   });
   return o;
};
Run Code Online (Sandbox Code Playgroud)

但它不适合我的工作。所以我创建了自己的插件。如果您有兴趣,您可以看看这个https://github.com/citnvillareal/serializeObject