Кнопка PayPal представляет форму и одновременно вызывает вызов Ajax?

У меня есть кнопка 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, форма будет отправлена.
  • если он вернет false, это не произойдет.

Это POC. У вас есть лучший способ справиться с этим без препятствий (используя jQuery для идентификатора формы, например). И вам также придется закодировать функцию.