Разница между serialize и serializeObject jquery

Я много искал, но не нашел идеальной разницы между serialize и serializeObject методом jquery.

Пожалуйста, помогите мне понять это.

Ответ 1

Как вы видите здесь, 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 в примере.

Ответ 2

$.serializeObject - это вариант существующего метода $.serialize, который вместо кодирования элементов формы в строку преобразует элементы формы в действительный объект JSON, который может использоваться в вашем приложении JavaScript.

Ответ 3

Я сделал несколько копаний здесь в 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

Ответ 4

Я думаю, что это простой способ! TODO -

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