плагин jquery для пар ключ формы значение

#javascript #jquery #html

#javascript #jquery ( jquery ) #HTML

Вопрос:

Есть ли способ получить доступ к массиву данных, которые браузер компилирует при отправке формы — перед фактической операцией GET / POST в js / jq?

 $("form").submit(function(event){
event.preventDefault();
//give me the data array here
});
 

Я все чаще использую AJAX — я вызываю event.preventDefault(), получаю пары имя / значение всех элементов, содержащихся в $(this) (форме), а затем отправляю их на сервер через $.post() . Собирать массив данных вручную становится сущей мукой. Было бы здорово, если бы существовал какой-нибудь плагин:

 $data = $("form").gimmeData();
 

Существует ли что-то подобное, что поддерживает все основные элементы ввода HTML? Неужели я неправильно подхожу к этому вопросу? Спасибо!

Ответ №1:

Да, в jQuery есть метод «serializeArray ()», который выполняет в значительной степени то, что вы просите.

Он возвращает массив, подобный:

 [ { name: "something", value: "whatever" }, { name: "another_one", value: 22 } ]
 

Вы можете превратить это в объект, подобный этому:

 var arr = $('#form_id').serializeArray(), obj = {};
for (var i = 0; i < arr.length;   i)
  obj[arr[i].name] = arr[i].value;
 

Если имя появляется в форме более одного раза, то его «значением» будет массив значений из отдельных полей.

Ответ №2:

 $data = $("form").serialize(); // will return query string

$data = $("form").serializeArray(); // will return array 
 

(Подробности здесь)

Ответ №3:

Вы можете использовать этот $('#form').serializeArray() метод для того, чтобы получить массив, переданный в POST-запрос.

Затем вы можете отредактировать объект, который вы получаете в обычном режиме.