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

Этот вопрос уже имеет ответ здесь:

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

59
задан dierre 15 January 2012 в 12:30
поделиться

2 ответа

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

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

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

edit ах, нет, он не устанавливает многозначные параметры как массивы - вы получаете повторы одного и того же имени. Таким образом, код создания объекта должен выглядеть так:

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;
  }
});

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

96
ответ дан 24 November 2019 в 18:15
поделиться

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

$('#form_id').serializeArray()
34
ответ дан 24 November 2019 в 18:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: