У меня есть функция jQuery ajax и я хотел бы отправить всю форму в виде данных поста. Мы постоянно обновляем форму, поэтому становится утомительным постоянно обновлять входные данные формы, которые должны быть отправлены в запросе.
155
Ответы:
Есть функция, которая делает именно это:
http://api.jquery.com/serialize/
источник
person[0].firstName
person[0].lastName
person[1].firstName
person[1].lastName
<input name="person[1].lastName">
?serialize () не очень хорошая идея, если вы хотите отправить форму методом post. Например, если вы хотите передать файл через ajax, он не будет работать.
Предположим, что у нас есть форма с этим идентификатором: «myform».
лучшее решение - создать FormData и отправить его:
источник
var
за 2016 год!form.serialize()
но он просто не работал для загрузки файла.new FormData(this)
хорошо сработалоВ общем случае используйте
serialize()
элемент формы.Помните, что несколько параметров <select> сериализуются под одним ключом, например
приведет к строке запроса, которая включает в себя несколько вхождений одного и того же параметра запроса:
что может быть не то, что вы хотите в бэкэнде.
Я использую этот код JS, чтобы свести несколько параметров к одному ключу, разделенному запятыми (бесстыдно скопированному из ответа комментатора в потоке вместо Джона Резига):
что превращает вышесказанное в:
В вашем коде JS вы бы назвали это так:
Надеюсь, это поможет.
источник
использование
serialize ()
Сериализуйте форму в строку запроса, которую можно отправить на сервер в запросе Ajax.
источник
Хороший вариант для jQuery - через FormData . Этот метод также подходит при отправке файлов через форму!
Ваша функция отправки в jQuery будет выглядеть так:
Чтобы добавить данные в форму, вы можете использовать скрытый ввод в форме или добавить его на лету:
источник
url: $(this).attr('action'),
вместо этогоВы просто должны опубликовать данные. и используя jquery ajax функцию установить параметры. Вот пример.
источник
Другие решения не работали для меня. Возможно, старый DOCTYPE в проекте, над которым я работаю, не позволяет использовать опции HTML5.
Мое решение:
ЯШ:
источник