serialize和serializeObject jquery之间的区别
我搜索了很多,但没有发现jquery的serialize
和serializeObject
方法之间的完美区别。
请帮我理解这个。
正如您在此处所看到的, 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; };