Сериализация формы с помощью jQuery

Вопрос

Подскажите пожалуйста, как можно выполнить сериализацию всех элементов формы в объект JSON?

Мне хотелось бы найти такой универсальный метод, который бы автоматически создавал соответствующий моей форме объект JSON, чтобы мне не приходилось каждый раз писать код для конкретной формы. Мне также не нужна строка, которую можно получить методом $('#formid').serialize(), а также карта объекта, возвращаемая методом $('#formid').serializeArray().


Ответ №1

Функция jQuery serializeArray() выполняет именно то, что тебе нужно. Просто надо привести данные к нужному формату. Можно воспользоваться этой функцией:

$.fn.serializeObject = function()
{
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if (o[this.name] !== undefined) {
            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;
};

Следующий пример выводит в консоль результат сериализации формы: первый - просто функцией serializeArray(), а второй - нашей функцией. Чтобы увидеть эти объекты, необходимо включить консоль Firebug или другого отладчика.

jQuery('#thebutton').click(function(){
   console.log(jQuery('#theform').serializeArray());
   console.log(jQuery('#theform').serializeObject());
});
Пример





Нет комментариев

Добавить комментарий


(обязательно)