#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-запрос.
Затем вы можете отредактировать объект, который вы получаете в обычном режиме.