перехватить отправку формы jquery

Как перехватить значения формы перед отправкой?

в настоящее время у меня есть большая форма, которая отправляется нашему авторизатору платежей (сделано это действием=»paymentautherizerURL»), однако я не получаю всю необходимую информацию от них, когда я иду хранить транзакцию в моей БД.

обычно авторизатор транзакций перенаправляет пользователя на одну из 3 страниц (одобрено, отклонено, ошибка), и наш веб-сайт выполняет работу оттуда. однако в настоящее время он застрял в эта страница, которая заставляет меня думать, что она не отправляется должным образом.

Я открыт для всех форм критики, подходов и идей. большое спасибо заранее, и если любая другая информация необходима, пожалуйста, дайте мне знать!

5 ответов

Как насчет изменения тега формы, чтобы включить атрибут onSubmit:

где функция save_data_function считывает значения из формы и отправляет их в скрипт на вашем сервере для сохранения в базе данных (или где-либо). Я использую скрытые iframes, чтобы сделать этот запрос скрытым от пользователя.

вы можете установить тайм-аут, если данные не передаются достаточно быстро в » data_saving_script.файл расширений.

поскольку ваш существующий пример уже имеет зависимость от javascript, вы можете перейти к сохранению данных с помощью AJAX, а затем использовать традиционную отправку для выполнения «реальной» записи в платежный шлюз.

вместо action=»paymentautherizerURL» вы должны отправить его на собственную страницу:

и когда вы закончите вы можете отправить данные в нужное место, используя cURL

С помощью curl вы можете отправлять данные post и ждать ответа, чтобы решить, какую страницу показать.

нет необходимости помещать данные в сеансы, при отправке формы, называемой функцией validate, в которой выполняется вся проверка, а затем отправлять данные в процесс ur.php использует ajex, тогда он сохранится на этой странице.

опубликуйте материал в скрипте, который вы размещаете, напишите только материал, который вам нужно сохранить в своей базе данных, создайте ссылку на заказ для него,

Если вы используете платежный процессор (например, Paypal)

перенаправление на второй скрипт, передающий ссылку заказа в URL. На втором скрипте ставим форму со скрытыми полями cotaining только реквизиты вашей платежной системы и некоторые JavaScript для submiot форме автоматически и сообщение для пользователя как подключении к PayPal. ‘

Если вы используете торговые услуги для авторизации платежа

перед тем, как сгенерировать вывод из сценария посадки, отправьте данные в ваш авторизатор, используя (например) завиток и проанализируйте ответ, запишите ответ против порядка в базе данных и выведите подходящее сообщение клиенту через веб-страницу

Источник

Получение данных формы на jQuery

перехватить отправку формы jquery. Смотреть фото перехватить отправку формы jquery. Смотреть картинку перехватить отправку формы jquery. Картинка про перехватить отправку формы jquery. Фото перехватить отправку формы jquery

Статья, в которой рассмотрим различные способы простого извлечения данных из HTML формы. А именно познакомимся с тем, как это сделать с помощью метода each, а также методов jQuery специально предназначенных для этого. Объект FormData в данной статье рассматривать не будем.

jQuery – Получения данных формы с помощью метода each

Работу по извлечению данных c элементов формы посредством метода each рассмотрим на примере.

В минимальном варианте данная последовательность действий состоит из создания пустого объекта JavaScript, перебора элементов формы с помощью метода each и добавления в созданный объект данных соответствующих значениям определённых атрибутов ( name и value ) элементов.

При необходимости, после получения данных формы можно добавить различные проверки. Это предотвратит отправку не валидных данных на сервер.

Методы jQuery serialize и serializeArray оличаются друг от друга только форматом вывода данных. Метод serialize обычно применяется в том случае, когда результат (данные формы) необходимо положить в строку HTTP запроса. Метод serializeArray наоборот, используется тогда, когда результат, который он предоставил, как правило, ещё необходимо обработать.

Внимание: Методы serialize и serializeArray не сериализуют данные из элементов, которые используются для выбора файлов.

PHP код, обрабатывающий ajax запрос на сервере:

Вышеприведёный код просто формирует строку из данных формы на сервере, которая затем будет отправлена клиенту (браузеру).

Сериализация формы с помощью методов jQuery serialize и serializeArray перехватить отправку формы jquery. Смотреть фото перехватить отправку формы jquery. Смотреть картинку перехватить отправку формы jquery. Картинка про перехватить отправку формы jquery. Фото перехватить отправку формы jquery

Источник

Отправка произвольной формы на AJAX без перезагрузки страницы

Технология AJAX используется для того, чтобы с помощью javascript отправлять «фоновые» http-запросы, что позволяет не перезагружать страницу, как это происходит при обычной отправке форм.

Не зависимо от используемой библиотеки, основные принципы отправки даных с помощью Аякса будут едиными. Я буду всё показывать на примере jQuery. В конце статьи вы найдете ссылку на zip-архив со всеми примерами.

Что можно отправлять через AJAX

Многие думают, что отправке подлежит только форма. Но на самом деле, отправлять можно любые данные. По большому счёту форма как таковая даже не нужна, можно разместить поля ввода (input, textarea и т.п.) в любых местах страницы: перед отправкой просто сформировать из них данные.

На практике стараются использовать именно форму, поскольку это значительно упрощает формирование данных: перед отправкой они просто кодируются (серилизуются) и в таком виде отправляются на сервер.

Общая схема работы

Почти всегда это происходит так:

Дополнительно, при получении ответа, часто скрывают форму, чтобы исключить её повторную отправку.

Начальный код

Вначале сформируем каркас HTML. Я использую UniCSS с готовыми CSS-классами. Также подключаю jQuery в секцию HEAD.

Теперь создадим простую форму и блок ответа.

Первые особенности

В первую очередь обратите внимание, что форма не имеет привычных атрибутов method и action. Формально никто не мешает их указать, но в реальности они будут использоваться только, если будет обычная, а не аякс-отправка. При аякс-отправке нам нужны будут лишь данные формы, а метод и адрес отправки задаются уже в js-коде. Из-за этого мы используем только атрибут id, по которому и сможем идентифицировать форму.

Кнопка имеет тип submit. На самом деле это не обязательно, поскольку главное это просто как-то отреагировать на нажатие кнопки, а это может быть не только submit, но и click. Тип submit удобен тем, что кнопка располагается внутри формы, а значит можно будет перехватить её отправку без дополнительной идентификации.

Но, если кнопку разместить вне формы (если стоит такая задача), то submit сработает не совсем корректно. Особенно если на странице несколько форм, возникнет неопределенность. В этом случае тип кнопки определяют как button (то есть она ничего не делает), и при этом присваивают ей идентификатор id. Например так:

Дальше в js-коде нужно будет перехватывать не submit (формы), а click (кнопки).

Блок #my_message служит для вывода ответа.

Если используется форма, то лучше всё-таки использовать именно submit, поскольку отправка формы может происходить и без нажатия на кнопку: Enter на любом текстовом input-поле. Это типовое поведение браузеров.

Первый вариант (submit)

При отправке формы при нажатии на submit-кнопку формы, возникает одноименное событие, которое мы и перехватываем. На jQuery это будет выглядеть так:

Функции для AJAX

То есть указывается тип запроса (method), адрес обработчика (url), данные (data, обычно в JSON-формате), а также функции, которые реагируют на ответ (в этом примере done).

Привожу полный код, чтобы вы не запутались:

Обработчик размещаем в файле post.php в таком виде:

То есть он пока ничего не делает, а просто выдаёт текст.

Здесь важный момент: адрес обработчика указывается так, чтобы он был доступен по http-адресу. Грубо говоря, адрес можно вбить в браузер. Это особенно актуально, когда используется сложная структура страниц или js-файл выносится в отдельный каталог. В некоторых случаях оптимальным будет указать полный http-адрес к php-файлу, например http://сайт/post.php. Перед тем, как работать с аякс-запросом, убедитесь в корректности адреса обработчика, иначе запрос уйдёт «в никуда», а вы будете гадать, почему он не работает. 🙂

Ответ от сервера мы получаем в виде простого текста, поэтому мы его просто выводим в блоке #my_message как есть.

Второй вариант (button)

Теперь рассмотрим второй вариант — отправку данных с помощью произвольного элемента по клику.

Как видите, принципиально здесь ничего не поменялось, кроме того, что мы отслеживаем click на кнопке #my_form_send (которая не обязательно может быть кнопкой, а например блоком span).

Какой вариант использовать, зависит от задач вёрстки. В некоторых случаях кнопку отправки нужно вынести за пределы формы и в этом случае придется использовать click-вариант.

PHP-обработчик

Давайте немного изменим обработчик, чтобы он выдавал какую-то отладочную информацию, например входящий post-запрос.

Здесь без труда угадываются поля форм.

Произвольные данные для отправки

Отправка данных происходит в специальном (серилизованном) формате. Функция jQuery serialize() собственно и приводит данные формы к этому формату, а на стороне сервера, PHP сам сформирует обычный массив. Всё это происходит в фоновом режиме, поэтому дополнительные преобразования не нужны.

Рассмотрим вариант, когда нужно отправить не форму, а какие-то произвольные данные, наример массив данных.

Если вместо фрагмента

то php-обработчик покажет пустой массив. То есть данные не прошли. Для того, чтобы данные были получены их следует оформить:

Более удобным (и распростанённым) будет второй вариант который представляет собой привычный js-объект/массив:

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

Приём сложных данных от сервера

Теперь рассмотрим случай, когда сервер должен вернуть не просто текст, а какие-то данные, например массив.

Для этого в php-скрипте следует отдавать специально преобразованный в JSON-формат php-массив. К счастью разработчики PHP всё уже предусмотрели. 🙂

Пусть у нас обработчик будет post-json.php :

перехватить отправку формы jquery. Смотреть фото перехватить отправку формы jquery. Смотреть картинку перехватить отправку формы jquery. Картинка про перехватить отправку формы jquery. Фото перехватить отправку формы jquery

Обработка входящих данных на сервере

Теперь рассмотрим вопросы приёма данных на сервере. Поскольку обработчик доступен прямо из браузера, то его следует как-нибудь защитить от прямого вызова. Полноценно сделать это можно в рамках CMS или php-фреймворка, вроде LPF, поэтому я покажу лишь минимальные приёмы.

В первую очередь следует заблокировать работу скрипта, если нет входящих POST-данных. В начале php добавьте такой код:

Теперь при прямом вызове этого скрипта, будет выдаваться сообщение и работа скрипта будет прекращена.

Во вторую очередь следует проверять все входящие данные из формы и по возможности их так обрабатывать, чтобы исключить возможные проблемы безопасности. Сама форма должна использовать HTML-атрибуты для полей, чтобы обеспечить первоначальную валидацию данных. Например, если поле предназначено для электропочты, то следует указать тип email — браузер не позволит выполнить отправку неверных данных.

В некоторых случаях желательно использовать различные jQuery-плагины, который позволяют отформатировать ввод данных. Например ввод телефона в виде групп цифр. Я затрагиваю эти вопросы, поскольку он достаточно важны, но в своих примерах я их опускаю, чтобы не загромождать код. 🙂

Отправка email-почты

Это достаточно типовая задача, которая решается через submit-отправку. Пусть будет простая форма из двух полей.

Обработчик у нас в post-email.php. На входе ($_POST) получаются такие данные:

Аналогично можно поступить и с другими полями формы. Поскольку они являются обязательными, то форма всегда должна их содержать.

Дальше вынесем входящие данные в отдельные переменные:

С помощью trim() удаляем возможные крайние пробелы, а strip_tags() удаляет все html/php-тэги.

Дальше следует проверить входящие данные. В первую очередь верность email-адреса. Вполне возможна ситуация, когда посетитель использовал старую версию браузера, которая не понимает нужный тип поля ввода. Если адрес ошибочный, то следует выдать предупреждение и выйти из php-обработчика.

Аналогично поступаем с именем, если оно оказалось пустым.

Вот теперь все проверки пройдены и можно выполнить непосредственную отправку почты. Я приведу полный код post-email.php:

Вы можете использовать данный пример как заготовку для своих задач.

Источник

Перехват данных с отправленной формы

Сохранение отправленной формы
Доброго времени суток. Дана лаба: Создать сайт по теме курсовой работы. Создать форму. После.

перехватить отправку формы jquery. Смотреть фото перехватить отправку формы jquery. Смотреть картинку перехватить отправку формы jquery. Картинка про перехватить отправку формы jquery. Фото перехватить отправку формы jqueryПерехват отправки данных формы
Здравствуйте! как можно проверить данные формы после как пользователь нажал submit. При этом, если.

Как загрузить ответ отправленной формы в модальное окно?
Есть форма, в ней, например, ввожу логин/пас и майл, и когда нажимаю на отправить, должно появиться.

Как загрузить ответ отправленной формы в модальное окно?
Есть форма, в ней, например, ввожу логин/пас и майл, и когда нажимаю на отправить, должно появится.

action=»/» говорит что обработка начнется с корневого файла сайта вроде битрикс на php тогда это index.php. Ставьте там точку останову и смотрите куда вас приведет интерпретатор, отлаживая строчку за строчкой.

shvyrevvg, Спасибо, сейчас попробую

Добавлено через 2 минуты
web_coder2, я уже его просматривал) У меня ощущение что просто скрипт есть который добавляется на главную страницу и обрабатывает эту форму, причём он нигде в файлах не светиться, потому что я большинство их просмотрел, либо это делает стандартный скрипт, который встроен в движок битрикса, но на их форуме мне никто так ничего и не смог сказать)

Конечно же она в index php не обрабатывается, запрос роутится, где будет обработка формы на стороне сервера зависит от логики программера, который эту форму кодил. Можете попробовать с ним связаться. Я же Вам посоветовал не просто посмотреть в файлике, а поставить там брейпоинт и нажать на кнопку отправить и перехватить обработку брейкпоинта и затем отлаживать построчно с заходом в каждую функцию. но делать это все нужно на сервере с настроенным xdebug и средой отладки.

Источник

Форма с валидацией и отправкой на Ajax

Расскажу о форме отправки писем с валидацией и отправкой данных на Ajax. В конечном итоге нам нужно получить форму с проверкой на правильность вводимых данных «на лету» и отправкой данных без перезагрузки страницы.

Вот скриншот формы:

перехватить отправку формы jquery. Смотреть фото перехватить отправку формы jquery. Смотреть картинку перехватить отправку формы jquery. Картинка про перехватить отправку формы jquery. Фото перехватить отправку формы jquery

А вот скриншот той же формы, но с ошибками ввода:

перехватить отправку формы jquery. Смотреть фото перехватить отправку формы jquery. Смотреть картинку перехватить отправку формы jquery. Картинка про перехватить отправку формы jquery. Фото перехватить отправку формы jquery

Ссылка на скачивание и тестирование — внизу.

jquery.form.validation.js — «почти jQuery плагин» от Романа Янке;

site.js — тут я объединил все мною написанные скрипты, которые здесь использованы;

send.php — скрипт отправки данных из формы на почту;

style.css — стили для ошибок ввода;

corner.gif — уголок для оформления сообщения об ошибке валидации;

index.php — наш главный файл в котором расположена форма и объединены скрипты со стилями.

Сначала я покажу содержимое файлов, а затем все объясню.

При отправки формы мы перехватываем стандартное действие атрибута action и вызываем нашу функцию ajax();. Для работы нашей валидации каждому инпуту и полю ввода задаем отдельные классы или идентификаторы. А для серверного скрипта — пишем name.

Вводим новую переменную msg, собираем в ней все полученные данные с полей формы функцией serialize(), у тега form у нас стоит id=«form», далее используем метод jQuery.ajax, соответственно метод отправки POST, url — путь к PHP скрипту, data — тут данные, которые нужно отправить на сервер, в нашем случае это данные с формы. В случае успешного результата (success), выводим в блок #results данные, которые поступили с сервера, например, отчет об отправке. А если произошла ошибка (error), то соответственно выводим сообщение об ошибке.

Далее, создадим функцию:

Инициализируем «почти плагин» и вешаем его на кнопку отправить, мы задали у нее class=»send» :

Есть два необязательных параметра: valid — если всё ок и invalid — если не ок

Далее — функции, которые я написал.

Первая функция
Вторая функция

Пользователь все правильно ввел, сообщение об ошибке нужно убрать из дерева DOM.

Можно написать очень много таких функций для полей любого типа. Идем дальше. Скрипт отправки данных на почту:

Здесь, думаю, все понятно. Сначала проверяем на заполненность и существование данных из формы, обязательно нужно делать проверку на сервере.

Если нет ошибок, то присваиваем полученным переменным нормальные имена, составляем сообщение и отправляем его. В противном случае выводим сообщения об ошибках.

Здесь ничего объяснять не буду — все и так понятно.

Может быть, моя статья кому-нибудь понравится.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *