Я много искал, но не нашел идеальной разницы между serialize
и serializeObject
методом jquery.
Пожалуйста, помогите мне понять это.
Я много искал, но не нашел идеальной разницы между serialize
и serializeObject
методом jquery.
Пожалуйста, помогите мне понять это.
Как вы видите здесь, serializeObject
не является родным методом jQuery и, следовательно, существует только в том случае, если вы или предыдущий программист сайта вставил его. Как упоминается в Q & A, найденном здесь, эта функция, вероятно, была обнаружена, когда кто-то работает на вашем сайте "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;
};
Ищите serializeObject
где-то в вашем JS, но обратите внимание: он, вероятно, не нужен, поскольку он выглядит так же, как .$.fn.serialize
После дальнейших обзоров я нашел, что это не то же самое. serializeObject
, найденный в другом Q & A, сериализует значение формы как объекта, тогда как serialize
кодирует значения как строку для представления.
Обратите внимание: , если вы хотите что-то, например serailizeObject
, которое является родным для ядра jQuery, см. serializeArray
.
Результат будет несколько отличаться тем, что serializeArray
создаст массив объектов ваших значений формы. каждый объект имеет { name: "", value: "" }
Developer
Tools
Console
в примере. $.serializeObject
- это вариант существующего метода $.serialize
, который вместо кодирования элементов формы в строку преобразует элементы формы в действительный объект JSON
, который может использоваться в вашем приложении JavaScript
.
Я сделал несколько копаний здесь в 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;
};