serialize和serializeObject jquery之间的区别

我搜索了很多,但没有发现jquery的serializeserializeObject方法之间的完美区别。

请帮我理解这个。

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

 $.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; }; 

在JS中的某个地方查找serializeObject ,但请注意,它可能不需要,因为它看起来像$.fn.serialize


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

请注意, 如果你想要一些jQuery Core本机的 serailizeObject ,那么请参阅serializeArray

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

请参阅示例中的Developer Tools Console

$.serializeObject是现有$.serialize方法的变体,它不是将表单元素编码为字符串,而是将表单元素转换为可在JavaScript应用程序中使用的有效JSON对象。

我已经在将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; }; 

但它不符合我的工作。 所以我创建了自己的插件。 如果您感兴趣的话可以通过https://github.com/citnvillareal/serializeObject查看

我认为这很简单!TODO–

 $.fn.serializeObject = function () { var o = {}; this.find("[name]").each(function () { o[this.name] = this.value; }); return o; };