strokoff

Сериализация формы в object jQuery

Как известно в jQuery можно провести сериализацию формы с помощью метода .serialize() и получить на выходе строку в виде:

«input_name=input_value&input_name2=input_value2»

Также в jQuery мы можем воспользоваться методом serealizeArray и получить на выходе массив с парами name=value. Стоит отметить, что для корректной сериализации формы должен быть указан атрибут name иначе ничего не будет работать. Что делать, если мы хотим получить на выходе сразу объект ? Напишем простую функцию плагин для расширения возможностей jquery serealizeToObject()

[cce lang=»javascript»]
$ = jQuery; //для наглядности
//Добавляем метод в jquery serializeToObject
$.fn.serializeToObject = function()
{
var object = {}; //создаем объект
var a = this.serializeArray(); //сериализируем в массив
$.each(a, function() { //проходимся по массиву и добавляем параметр name как имя свойства объекта и value как его значение
if (object[this.name] !== undefined) { //не забываем проверить данные
if (!object[this.name].push) {
object[this.name] = [object[this.name]];
}
object[this.name].push(this.value || »);
} else {
object[this.name] = this.value || »;
}
});
return object;
};
[/cce]
Использовать далее очень просто.
[cce lang=»javascript»]
$(‘#form’).serializeToObject();
[/cce]
На этом все, спасибо.


Последняя редакция 30 июля, 2014 в 12:07