У меня есть кнопка PayPal, которая отправляет форму URL-адресу, указанному в атрибуте action=""
. Мне бы хотелось, чтобы эта кнопка выполняла вызов ajax в одно и то же время (или примерно то же самое) с отправкой формы.
Таким образом, форма выглядит следующим образом:
<?php echo(' <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" id="payWithPayPalForm"> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="business" value="me@mydomain.com"> <input type="hidden" name="amount" value="'.$price.'"> <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest" > <input type="image" src="http://img.ruphp.com/php/btn_paynowCC_LG.gif" border="0" id="payWithPayPalButton" name="submit" alt="PayPal - The safer, easier way to pay online!"> <img alt="" border="0" src="http://img.ruphp.com/php/pixel.gif" width="1" height="1"> </form> '); ?>
И запрос ajax следующий:
$.ajax({ type: "POST", url: "classes/acceptOfferFunction.php", data: { hash: getURLParameter('hash'), hash2: getURLParameter('hash2') }, success: function (result) { } });
Проблема здесь в том, что ваш запрос ajax будет отменен, потому что страница будет перезагружена (фактически перенаправлена на paypal).
Что вы можете сделать, это отправить запрос ajax, когда вы отправите форму и дождитесь окончания запроса ajax. Затем отправьте форму.
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" onsubmit="return ajaxRequest()" method="post" id="payWithPayPalForm">
Используя onsubmit
, когда пользователь отправит форму, функция ajaxRequest
будет ajaxRequest
. Поскольку мы возвращаем ранее, форма будет ждать возврата функции для продолжения.
ajaxRequest()
возвращает true, форма будет отправлена. Это POC. У вас есть лучший способ справиться с этим без препятствий (используя jQuery для идентификатора формы, например). И вам также придется закодировать функцию.