jQuery serializeArray () пары значений ключа

У меня проблемы с сериализацией формы

$(form).serializeArray()

Вернет [{name:"name1",value:"value1"},{name:"name2",value:"value2"}] пары.

Можно ли получить результат в форме

 {name1:value1,name2:value2} 

Так что с ними легче справиться?

 var result = { }; $.each($('form').serializeArray(), function() { result[this.name] = this.value; }); // at this stage the result object will look as expected so you could use it alert('name1 = ' + result.name1 + ', name2 = ' + result.name2); 

Демо-версия.

 $.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; }; 

Принятый ответ отлично работает, если в вашей форме нет флажков или переключателей. Поскольку группы из них имеют одинаковый атрибут имени, вам нужно создать значение массива внутри объекта. Так для html как:

    

Ты получишь:

 {the-checkbox:['1', '2', '3']} 

Этот бит кода прекрасно справляется.

 /*! * jQuery serializeObject - v0.2 - 1/20/2010 * http://benalman.com/projects/jquery-misc-plugins/ * * Copyright (c) 2010 "Cowboy" Ben Alman * Dual licensed under the MIT and GPL licenses. * http://benalman.com/about/license/ */ // Whereas .serializeArray() serializes a form into an array, .serializeObject() // serializes a form into an (arguably more useful) object. (function($,undefined){ '$:nomunge'; // Used by YUI compressor. $.fn.serializeObject = function(){ var obj = {}; $.each( this.serializeArray(), function(i,o){ var n = o.name, v = o.value; obj[n] = obj[n] === undefined ? v : $.isArray( obj[n] ) ? obj[n].concat( v ) : [ obj[n], v ]; }); return obj; }; })(jQuery); 

Применение

 $(form).serializeObject(); 
 new_obj = {} $.each($(form).serializeArray(), function(i, obj) { new_obj[obj.name] = obj.value }) 

ваши данные в new_obj

Вы можете создать пользовательскую функцию.

 var complex = $(form).serialize(); // name1=value1&name2=value2 var json = toSimpleJson(complex); // {"name1":"value1", "name2":"value2"} function toSimpleJson(serializedData) { var ar1 = serializedData.split("&"); var json = "{"; for (var i = 0; i 0 ? ", " : ""; json += "\"" + ar2[0] + "\" : "; json += "\"" + (ar2.length < 2 ? "" : ar2[1]) + "\""; } json += "}"; return json; } 

Вот некоторая модернизация кода Холлистера .

 (function($,undefined){ '$:nomunge'; // Used by YUI compressor. $.fn.serializeObject = function(){ var obj = {}, names = {}; $.each( this.serializeArray(), function(i,o){ var n = o.name, v = o.value; if ( n.includes( '[]' ) ) { names.n = !names.n ? 1 : names.n+1; var indx = names.n - 1; n = n.replace( '[]', '[' + indx + ']' ); } obj[n] = obj[n] === undefined ? v : $.isArray( obj[n] ) ? obj[n].concat( v ) : [ obj[n], v ]; }); return obj; }; })(jQuery); 

Если вам нужны имена полей в качестве myvar[] для myvar[] .

Дайте вашей форме id (form-id)

 var jsoNform = $("#form-id").serializeObject(); jQuery.fn.serializeObject = function () { var formData = {}; var formArray = this.serializeArray(); for (var i = 0, n = formArray.length; i < n; ++i) formData[formArray[i].name] = formArray[i].value; return formData; }; 

Чтобы получить только входные данные, где имеет значение …

 var criteria = $(this).find('input, select').filter(function () { return ((!!this.value) && (!!this.name)); }).serializeArray(); 

критерии: {name: “LastName”, значение: “smith”}

  • Настройте SparkContext с помощью sparkConf.set (..) при использовании искровой оболочки
  • Можно ли десериализовать XML в List ?
  • Как я могу сохранить состояние своей программы и загрузить ее?
  • Весенние сеансовые компоненты (controllerы) и ссылки на службы с точки зрения сериализации
  • Любой способ заставить DataContractJsonSerializer правильно сериализовать словари?
  • Неверный регистр
  • Каковы недостатки встроенной сериализации на основе BinaryFormatter .Net?
  • Циркулярная ссылка обнаружила исключение при сериализации объекта в JSON
  • Каков самый простой способ генерации xml в c ++?
  • Каков правильный способ создания пользовательского .NET Exception сериализуемым?
  • Как десериализовать XML-документ
  • Interesting Posts
    Давайте будем гением компьютера.