У меня есть форма с именем orderproductForm
и неопределенным количеством входов.
Я хочу сделать что-то вроде jQuery.get или ajax или что-то подобное, что вызовет страницу через Ajax, и отправить все входные данные формы orderproductForm
.
Я полагаю, один из способов сделать что-то вроде
jQuery.get("myurl",
{action : document.orderproductForm.action.value,
cartproductid : document.orderproductForm.cartproductid.value,
productid : document.orderproductForm.productid.value,
...
Однако я не знаю точно все формы ввода. Есть ли функция, функция или что-то, что просто отправит ВСЕ входные данные формы?
.ajaxSubmit()
/.ajaxForm()
не являются основными функциями jQuery - вам нужен плагин jQuery FormЭто простая ссылка:
Я надеюсь, что это поможет вам.
источник
type: $(this).attr('method')
если вы используетеmethod
атрибут в вашей форме.Другое похожее решение с использованием атрибутов, определенных в элементе формы:
источник
get
и текущий URL-адрес соответственно. Можно сделать с добавлением этого предположения в код.Есть несколько вещей, которые вы должны иметь в виду.
1. Есть несколько способов отправить форму
Поэтому мы должны привязать событие отправки формы , а не событие нажатия кнопки. Это обеспечит работу нашего кода на всех устройствах и вспомогательных технологиях сейчас и в будущем.
2. Hijax
Возможно, у пользователя не включен JavaScript. Здесь хорошо использовать шаблон hijax , где мы бережно контролируем форму с помощью JavaScript, но оставляем ее для отправки в случае сбоя JavaScript.
Мы должны извлечь URL и метод из формы, поэтому, если HTML меняется, нам не нужно обновлять JavaScript.
3. Ненавязчивый JavaScript
Использование event.preventDefault () вместо return false - это хорошая практика, поскольку оно позволяет всплыть событию. Это позволяет другим сценариям связываться с событием, например, аналитическим сценариям, которые могут отслеживать взаимодействия с пользователем.
скорость
В идеале мы должны использовать внешний скрипт, а не вставлять наш скрипт в строку. Мы можем сделать ссылку на это в разделе заголовка страницы, используя тег скрипта, или ссылку на него внизу страницы для скорости. Скрипт должен спокойно улучшать пользовательский опыт, а не мешать.
Код
Предполагая, что вы согласны со всем вышеперечисленным, и вы хотите перехватить событие submit и обработать его с помощью AJAX (шаблон hijax), вы можете сделать что-то вроде этого:
Вы можете вручную запустить отправку формы в любое время через JavaScript, используя что-то вроде:
Редактировать:
Я недавно должен был сделать это и закончил тем, что написал плагин.
Добавьте атрибут data-autosubmit к вашему тегу формы, и тогда вы можете сделать это:
HTML
JS
источник
Вы также можете использовать FormData (но не доступно в IE):
Вот как вы используете FormData .
источник
Простая версия (не отправляет изображения)
Скопируйте и вставьте ajaxification формы или всех форм на странице
Это модифицированная версия ответа Alfrekjv
JavaScript
Я хотел отредактировать ответ Alfrekjv, но слишком отклонился от него, поэтому решил опубликовать его как отдельный ответ.
Не отправляет файлы, не поддерживает кнопки, например, нажатие кнопки (включая кнопку отправки) отправляет ее значение в виде данных формы, но, поскольку это ajax-запрос, нажатие кнопки не будет отправлено.
Для поддержки кнопок вы можете зафиксировать фактическое нажатие кнопки вместо отправки.
На стороне сервера вы можете обнаружить ajax-запрос с этим заголовком, который jquery устанавливает
HTTP_X_REQUESTED_WITH
для phpPHP
источник
Этот код работает даже с вводом файла
источник
Array.from(new FormData(form))
перебирает этот итератор формданных :)Мне очень понравился этот ответ от superluminary, и особенно то, как он обернулся, является решением в плагине jQuery . Так что спасибо superluminary за очень полезный ответ. В моем случае, однако, я хотел плагин, который позволял бы мне определять обработчики событий успеха и ошибок с помощью опций при инициализации плагина.
Итак, вот что я придумал:
Этот плагин позволяет мне очень легко «отрегулировать» html-формы на странице и предоставить обработчики событий on- submit , success и error для реализации обратной связи с пользователем о статусе отправки формы. Это позволило использовать плагин следующим образом:
Обратите внимание, что обработчики событий success и error получают те же аргументы, которые вы получили бы от соответствующих событий метода jQuery ajax .
источник
Я получил следующее для меня:
где
Это предполагает, что сообщение для 'url' возвращает ajax в форме
{success: false, error:'my Error to display'}
Вы можете изменить это, как вам нравится. Не стесняйтесь использовать этот фрагмент.
источник
target
здесь? Зачем вам отправлять форму с AJAX, только для перенаправления на новую страницу?Форма отправки jQuery AJAX - это ничто иное, как отправка формы с использованием идентификатора формы при нажатии на кнопку
Пожалуйста, следуйте инструкциям
Шаг 1 - тег формы должен иметь поле идентификатора
Кнопка, которую вы собираетесь нажать
Шаг 2 - отправить событие в jQuery, что помогает отправить форму. в приведенном ниже коде мы готовим JSON-запрос от имени элемента HTML .
для демонстрации нажмите на ссылку ниже
Как отправить форму, используя jQuery AJAX?
источник
рассмотреть возможность использования
closest
источник
Я знаю, что это
jQuery
связанный вопрос, но сейчас с JS ES6 все намного проще. Поскольку чистогоjavascript
ответа нет, я подумал, что мог бы добавить к этому простое чистоеjavascript
решение, которое, на мой взгляд, намного чище, используяfetch()
API. Это современный способ реализации сетевых запросов. В вашем случае, поскольку у вас уже есть элемент формы, мы можем просто использовать его для построения нашего запроса.источник
Чтобы избежать отправки нескольких формданных:
Не забудьте отменить привязку события отправки, прежде чем форма снова будет отправлена, пользователь может вызывать функцию sumbit более одного раза, возможно, он что-то забыл или произошла ошибка проверки.
источник
Если вы используете форму .serialize () - вам нужно дать каждому элементу формы имя, подобное этому:
И форма сериализуется так:
источник
Вы можете использовать это при отправке функции, как показано ниже.
HTML-форма
функция jQuery:
Для получения более подробной информации и образца посетите: http://www.spiderscode.com/simple-ajax-contact-form/
источник
Это не ответ на вопрос OP,
но в случае, если вы не можете использовать статическую форму DOM, вы также можете попробовать вот так.
источник
Пытаться
Показать фрагмент кода
источник
Просто дружеское напоминание, что
data
тоже может быть объектом:источник
JavaScript
HTML
источник
Также есть событие submit, которое может быть вызвано так: $ ("# form_id"). Submit (). Вы бы использовали этот метод, если форма уже хорошо представлена в HTML. Вы просто прочитали бы на странице, заполнили поля ввода данными, а затем вызвали .submit (). Он будет использовать метод и действие, определенные в объявлении формы, поэтому вам не нужно копировать его в свой javascript.
Примеры
источник