Отправка 2 форм 1 сабмитом
Есть две формы одна отсылает письмо на почту. Вторая переходит на сайт оплаты QIWI.
Внимание вопрос: Не нажимать же две кнопки, как все повесить на одну?
Если OnClick то что там прописывать? Я много что пробовал, толку не было.
Отправка форм PHP
Здравствуйте. Я начинающий web-разработчик. Еще очень мало знаю. Решил создать простенький сайт, но.
Отправка форм
Здравствуйте, подскажите пожалуйста, я заметил что на сайтах в отправках форм по мимо отправляемых.
Отправка форм на бд
Помогите пожалуйста сделать отправку данных заполненных форм мне на бд, желательно в свои списки.
Отправка нескольких форм
Здравствуйте! На странице есть несколько форм для внесения в БД. Подскажите, пожалуйста, как.
Что происходит при нажатии кнопки submit?
Осуществляется переход на новую страницу, при этом передаются переменные из формы.
То есть просто так отправить два запроса на чистом html не получится. Чтобы одновременно отправилось две формы, должно открыться две разные страницы.
Я вижу два решения.
1. Отправлять одну из форм в новом окне. При этом параметры получится передать только методом get. Проще говоря собрать все данные одной из форм, сформировать строку запроса и присоединить ее к УРЛ. После чего получившийся УРЛ+строка запроса открыть в новом окне.
2. Делать два ajax запроса.
Собрать данные каждой из форм и отправить обе аяксом.
1) форма оплаты переходит на сайт Qiwi
2) моя форма отправляет письмо на почту, и возвращается назад, не открывая окон.
И?
К чему это было сказано?
Без аякса «отправка формы» это открытие страницы заново с нуля.
При простом открытии страницы браузер просто говорит серверу «хочу вот эту страницу». При отправке формы браузер говорит серверу «хочу вот эту страницу с такими то параметрами».
Еще раз. Отправка формы — запрос страницы + параметры.
Без аякса отправить две формы — открыть две разные страницы с параметрами (или одну и ту же с разными параметрами).
Варианты отправки двух форм я привел в прошлом сообщении. Если что-то непонятно уточняй.
Добавлено через 3 минуты
Сообщение от Alorian
1. Отправлять одну из форм в новом окне. При этом параметры получится передать только методом get. Проще говоря собрать все данные одной из форм, сформировать строку запроса и присоединить ее к УРЛ. После чего получившийся УРЛ+строка запроса открыть в новом окне.
Мое сообщение было ответом на ваше «Что происходит при нажатии кнопки submit?»
Меня первое решение устраивает:
Пусть киви-форма открывается в новом окне. У нее как раз таки метод GET. И после нажатия на кнопку submit форма переходит на сайт киви.
А вторая отправляет емэйл и остается в этом окне.
Как реализовать? onclick не работает по айди или я что то не так пишу
Если что вот форма http://aubakirovalexandr.com/ выберите количество, потом выберите первую цену и нажмите заказать
Сообщение от AubakirovAlex
А. Это был риторический вопрос. Я сам на него ответил в том же посте. Привык в таком формате отвечать. Мне кажется так понятнее.
Сообщение от AubakirovAlex
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> head> meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> title>/title> meta name="robots" content="index,follow" /> meta name="description" content="" /> meta name="keywords" content="" /> link href="/favicon.ico" rel="shortcut icon" /> link media="all" rel="stylesheet" href="style.css" type="text/css" /> /head> body> script type="text/javascript"> window.onload = function() < document.getElementById("submit").onclick = popupForm >function popupForm() < var inputs = document.getElementById("asd").getElementsByTagName("input") var query = "?" for(var i=0; i < inputs.length; i++) { if(i != 0) { query += "&" } query += inputs[i].name + "=" + encodeURIComponent(inputs[i].value) } window.open("http://asd.ru/" + query) } /script> form method="get" action=""> input type="text" name="aaa" value="qweasd"> input type="text" name="bbb" value="dsaewq"> input id="submit" type="submit" name="ccc" value="Отправить" /> /form> form id="asd" method="get" action=""> input type="text" name="111" value="qweasd"> input type="text" name="222" value="dsaewq"> input type="submit" name="333" value="Отправить" /> /form> /body> /html>
Но скрипт пишет что не были переданы параметры, потому что я тут не то пишу естественно, но думаю вам сейчас будет понятней мой замысел
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
script type="text/javascript"> window.onload = function() { document.getElementById("subform").onclick = popupForm } function popupForm() { var inputs = document.getElementById("lesform").getElementsByTagName("input") var query = "?" for(var i=0; i inputs.length; i++) { if(i != 0) { query += "&" } query += inputs[i].name + "=" + encodeURIComponent(inputs[i].value) } window.open("http://site.com/mail.php") } script>
Как отправить несколько форм одной кнопкой submit?
submit работает на AJAX и отправляет каждую форму без проблем совершенно. Вот только 3 кнопки submit не красиво и не удобно для пользователя. Скажите, можно ли скрыть кнопки submit (допустим, через display:none) от пользователя и оставить лишь одну, которая при ее нажатии нажимала на все кнопки по очереди?
P.S.: Писать другой обработчик не вариант, т.к. система смежная с другой и ее работу нарушать нельзя. Нужно как-то обойти вышеописанную проблему.
ну, начнем с того что форм у вас не 3, а 1.
Кнопки в форме 3, хотя достаточно одной, в конце формы(или в любом другом месте внутри тега формы).
Как у вас работает аякс — загадка, ибо кода вы не привели, а то что здесь нарисовано работать нормально не должно, так как:
1) id — уникальный идентификатор элемента, что как бэ намекает на то что повторяться для нескольких элементов он не должен.
2) форма отправленная в текущем виде на сервере будет просто передавать на сервер 3 последних значения из всего набора инпутов, тк сервер примет строку в которой будут повторяющиеся имена переменных — соответственно последние полученные данные затрут предыдущие. Это можно побороть яваскриптом, который будет реализовать анальный костыль, например считывая 3 инпута перед вызывающей кнопкой. Если вы знаете толк в извращениях — флаг в руки.
3) так как все 3 имени инпутов в группах совпадают — какой смысл их различать? как угадать из какого я отправляю данные?
4) если нужно 3 раза вызвать обработчик на сервере — 3 раза вызывайте аякс запрос, каждый раз передавая последующие 3 значения из инпутов, не забывайте, что аякс — асинхронная функция, запуск следующего запроса лучше всего вешать на onsuccess предыдущего запроса. Измените ид для каждого элемента на уникальный, или уберите вообще. Проще всего сделать все инпуты одной группы с одинаковым классом, по нему и выбирать группу, например $(‘.firstinputs’)
В чем прикол трех одинаковых форм? Назовите их по разному и отправте одним запросом, типо fio_3, fio_2, и впринципе лучше переменные с транслита называть английскими словами
Нельзя. Обработчик должен считать именно эти названия и присвоить каждой отправленной форме свой ID.
Да это я для примера так назвал, естественно у меня все на английском названо и более понятно)))
danyfir, причем тут? как понять что вообще должно происходить? если что id должны быть один у всех ,а тут 3 одинаковых, непонятно что и как работает но мы должны разбираться
Илья, не можете ответить грамотно, либо не понимаете вопроса — проходите мимо! к чему разводить дискуссии как агрошкольники? Написал так, как смог. Кто сможет, тот поймет и ответит.
Лишь указал на полный абсурд Вашего поста и Вашу глупость.
И что Вам надо тоже непонятно. Ну создайте 4 кнопку. По клику она будет по очереди делать запрос 1, 2 и 3. Тут у Вас проблема? Или Вам не сформировать запрос? Создайте свой уникальный data-атрибут каждому полю. К нему обращайтесь для создания запроса.
danyfir, а вот хамить не надо.
Научитесь формулировать вопросы, чтобы все могли понять.
И если у Вас код рабочий другой, то как Вам помочь? Гадать на кофейной гуще?
Выкладывайте реальный код.
Несколько форм на одной странице с отправкой без перезагрузки
- 29.06.2015
- 58588
Вы можете скачать готовые файлы, в которые дополнительно включена проверка введенных данных в форму (валидация), поделившись статьей в Twitter.
Представьте, что у вас на странице сайта есть несколько форм связи с различным предназначением. Лучший способ объяснить эту потребность, это создание сайта, в котором необходимо разместить форму заказа звонка, форму запроса цены, форму запроса каталога и еще какие-либо необходимые вам формы.
За пересылку письма с введенными в форму данными отвечает PHP обработчик. Для передачи данных в обработчик используется кнопка с типом submit . В случае использования нескольких форм связи с одним php обработчиком Вы должны передать в него данные именно той формы, в которой была нажата кнопка «Отправить». Это можно сделать через if/else , с учетом разных имен атрибутов, наплодив одинаковых кусков кода, можно создать кучу обработчиков с разными именами, но одинаковым кодом, а можно использовать скрипт jQuery с помощью которого данные в обработчик будут отправляться из той формы где было произведено нажатие на кнопку «Отправить».
Далее мы покажем, как реализовать на одной странице несколько форм связи, отправляющих данные без перезагрузки страницы в один обработчик.
Несколько форм связи с одним обработчиком
К примеру, возьмем три формы.
Присвойте каждой форме свой уникальный id . У нас это form1, form2 и form3. Кроме того, для стилизации формы примените классы css , для отображения подсказки включите атрибуты placeholder , а для формирования темы письма добавьте скрытый input .
Таким образом, теперь формы имеют различные идентификаторы id и мы можем написать скрипт, который будет отправлять данные в обработчик ориентируясь на id формы.
Отправка формы без перезагрузки страницы
Обычно при отправке данных из формы происходит перенаправление на страницу подтверждения. В случае использования нескольких форм на странице, это будет мешать и отвлекать клиента от вашего предложения и заполнения какого-либо другого запроса.
Используя AJAX, отправку формы без перезагрузки страницы сделать очень легко.
После нажатия кнопки «Отправить» вместо полей ввода формы у вас появится сообщение об отправке.
update: При необходимости восстановления формы после отправки данных, вы можете использовать следующее решение (вставьте выделенный код в указанное место и оберните все input в форме в div с id, например inputs):
Метод .load() загружает данные и вставляет в указанный элемент.
«#parent» — id формы, в которую необходимо вставить удаленные данные.
В приведенном примере скрипта с отправкой данных форм без перезагрузки страницы, оберните в div все input . Назначьте ему id , например inputs . Этот div с вложенными полями input удаляется скриптом, на его месте появляется сообщение об отправке. Получается, что в коде остается тег form с id , этот id необходимо указать в #parent , это станет контейнером для загрузки скриптом данных формы (удаленные input ).
«http://site.ru» — адрес вашей страницы с формой, откуда скрипт загрузит удаленные input . Например, если ваша форма будет находиться по адресу http://site.ru/contacts.html, вставляете этот адрес.
«#child» — id блока, который содержит input . В данном случае div #inputs .
3000 — время в мс через которое восстановится код формы.
PHP обработчик
Большинство форм для передачи данных используют метод POST , это позволяет «спрятать» данные формы и не загромождать URL в адресной строке.
Данный обработчик содержит проверку метода передачи данных.
Создавая формы на страницах своего сайта, не забывайте о внедрении проверки введенных данных и методах защиты от спама.
Возникли вопросы? Давайте обсудим их в комментариях.
Блог
Создание сайта компании
Madcatzz
Чтобы быть успешным сегодня, вы должны продавать свои услуги или продукцию как можно более широкому кругу лиц. В прошлом это было более сложно, но с появлением сети интернет вы можете охватить любое количество клиентов, необходимо лишь подойти к этому профессионально.
Создание сайта компании
Madcatzz
Чтобы быть успешным сегодня, вы должны продавать свои услуги или продукцию как можно более широкому кругу лиц. В прошлом это было более сложно, но с появлением сети интернет вы можете охватить любое количество клиентов, необходимо лишь подойти к этому профессионально.