Intereting Posts
Добавление пользовательского почтового адреса woocommerce на основе атрибута продукта Каков наилучший способ остановить людей, взломавших таблицу рекордов на основе PHP в флеш-игре Ускорение проверки XML-схемы пакета XML-файлов по той же схеме XML (XSD) PHP 7.1.x – mysqli_connect не определен (расширение включено) PHP создает текстовый файл на сервере Как построить индексы хранилища данных (PHP GAE) Переменная не существует в symfony2 почему нам все еще нужен родительский конструктор, когда класс контроллера расширяет родительский контроллер? Добавление столбца флажка в таблицы со значениями, динамически генерируемыми из базы данных в php SublimeLinter: PHP linting не работает Проверьте, содержит ли строка URL-адрес и получает содержимое url php Предложение MySQL Query IN () Медленное индексирование столбца Неустранимая ошибка: допустимый размер памяти 134217728 байт исчерпан (пытался выделить 71 байт) Laravel angularjs Request :: ajax () всегда false Отправить пользователю в PayPal Guest Checkout

Отправить несколько форм с помощью одной кнопки

Я использую $_SESSION для динамического создания форм для своего интернет-магазина. Эти формы содержат пользовательскую информацию для продукта, который хочет клиент. Это макет:

Страница 1

Клиент заполняет форму, которая выглядит примерно так:

 <form action="page2" method="post"> <input type="text" name="size"> <input type="text" name="color"> <input type="submit" name="submit" value="Review Order"> </form> 

Страница 2

Клиент проверяет детали заказа и имеет возможность добавлять дополнительные продукты. Клиент возвращается на страницу1, чтобы заказать еще один. Все заказы клиента будут показаны на стр. 2 в соответствующей форме.

Выглядит так:

 Size: 1 Color: blue Click Here To Checkout Size: 2 Color:green Click Here To Checkout Size:3 color:red Click Here To Checkout 

Я хочу одну кнопку, которая добавит ВСЕ заказы в корзину PayPal. Конечно, они могут добавить каждый заказ индивидуально, нажав « Click Here To Checkout , но затем им придется пройти через большой цикл, чтобы добавить несколько продуктов.

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

Это то, что я пробовал, но это явно не сработало :

 <script> $(document).ready(function(){ $('#clickAll').on('click', function() { $('input[type="submit"]').trigger('click'); }); }); </script> <form action="" method="post"> <input type="text" name="name"> <input type="submit" name="submit" value="submit"> </form> <form action="" method="post"> <input type="text" name="name"> <input type="submit" name="submit" value="submit"> </form> <form action="" method="post"> <input type="text" name="name"> <input type="submit" name="submit" value="submit"> </form> <button id="clickAll">Submit All</button> 

Вот скрипт php, который генерирует динамические формы с помощью $_SESSION :

 <?php if(isset($_POST['submit'])) : $test = array( 'size' => $_POST['size'], 'color' => $_POST['color'], 'submit' => $_POST['submit'] ); $_SESSION['testing'][] = $test; endif; if(isset($_SESSION['testing'])) : foreach($_SESSION['testing'] as $sav) { ?> <form action="paypal.com/..." method="post"> <input type="text" name="size" value="<?php echo $sav['size']; ?>"> <input type="text" name="color" value="<?php echo $sav['color']; ?>"> <input type="submit" name="submit" value="Click Here to Checkout"> </form> <?php } endif; ?> 

Итак, вопрос в том, как я могу отправить все формы с помощью кнопки ONE?

Вы пытались сделать это с помощью $ .ajax? Вы можете добавить foreach или вызвать другую форму в функции Onsucces. Другой подход заключается в том, что все формы преобразуются в одну форму с массивом, который указывает на правильную «абстрактную» форму:

 <form action="" method="post"> <input type="text" name="name[]"> <input type="text" name="example[]"> <input type="text" name="name[]"> <input type="text" name="example[]"> <input type="text" name="name[]"> <input type="text" name="example[]"> <button id="clickAll">Submit All</button> </form> 

И в php:

 foreach ($_POST['name'] as $key => $value) { $_POST['name'][$key]; // make something with it $_POST['example'][$key]; // it will get the same index $key } 

Вот рабочий jsFiddle: http://jsfiddle.net/SqF6Z/3/

В принципе, добавьте class в каждую form и trigger() submit в этом class . Вот так:

HTML (только пример):

 <form action="http://www.google.com" method="get" class="myForms" id="1stform"> <input type="text" value="1st Form" name="q1" /> </form> <form action="http://www.google.com" method="get" class="myForms" id="2ndform"> <input type="text" value="2nd Form" name="q2" /> </form> <form action="http://www.google.com" method="get" class="myForms" id="3rdform"> <input type="text" value="3rd Form" name="q3" /> </form> <input type="button" id="clickMe" value="Submit ALL" /> 

JQuery:

 $('.myForms').submit(function () { console.log(""); return true; }) $("#clickMe").click(function () { $(".myForms").trigger('submit'); // should show 3 alerts (one for each form submission) }); 

FWIW, я делаю это, создавая iframe, делая цель для второй формы, а затем отправляю оба, как это

 //create the iframe $('<iframe id="phantom" name="phantom">').appendTo('#yourContainer'); 

и создать двойную подачу вот так:

 function dualSubmit() { document.secondForm.target = 'phantom'; document.secondForm.submit(); document.firstForm.submit(); } 

работает!

сначала создайте цикл, чтобы получить все формы id и отправить их в ajax.

 <script name="ajax fonksiyonları" type="text/javascript"> function validate(form){ //get form id var formID = form.id; var formDetails = $('#'+formID); $.ajax({ type: "POST", url: 'ajax.php', data: formDetails.serialize(), success: function (data) { // log result console.log(data); //for closing popup location.reload(); window.close() }, error: function(jqXHR, text, error){ // Displaying if there are any errors console.log(error); } }); return false; } //this function will create loop for all forms in page function submitAll(){ for(var i=0, n=document.forms.length; i<n; i++){ validate(document.forms[i]); } } 

создать кнопку для отправки в порядке

 <a class="btn" id="btn" onclick="submitAll();" href="">Save &amp; Close</a> 

затем прекратите вызов ajax после успеха. Также не забудьте войти в консоль.

этот код работает во всплывающем и закрывающемся всплывающем окне после завершения всех ajax.