Как получить данные формы как объект в jquery

Я пробовал jQuery('#form_id').serialize(). Это возвращает только данные формы в виде строки с кодировкой url. Можно ли получить данные формы как объект?

Ответ 1

Вы пробовали "serializeArray"? Это дает вам массив имен и значений. Вы можете превратить это в объект, если хотите:

var paramObj = {};
$.each($('#myForm').serializeArray(), function(_, kv) {
  paramObj[kv.name] = kv.value;
});

(Мне нужно еще раз проверить, что делает jQuery с массивами, я думаю, что он кодирует их как значения массива Javascript, но я не уверен на 100%.)

изменить ah нет, он не устанавливает многозначные параметры в виде массивов - вы получаете повторы с тем же именем. Таким образом, код make-object должен выглядеть следующим образом:

var paramObj = {};
$.each($('#myForm').serializeArray(), function(_, kv) {
  if (paramObj.hasOwnProperty(kv.name)) {
    paramObj[kv.name] = $.makeArray(paramObj[kv.name]);
    paramObj[kv.name].push(kv.value);
  }
  else {
    paramObj[kv.name] = kv.value;
  }
});

(или что-то в этом роде, возможно, можно немного сжать).

Ответ 2

Вы можете взглянуть на функцию serializeArray:

$('#form_id').serializeArray()