2013-03-14 2 views
0

У меня есть кнопка PayPal, которая отправляет форму URL-адресу, указанному в атрибуте action="" формы. Мне бы хотелось, чтобы эта кнопка выполняла вызов ajax в одно и то же время (или примерно то же самое) с отправкой формы.Кнопка PayPal, представляющая форму и вызывающая вызов 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="[email protected]"> 
    <input type="hidden" name="amount" value="'.$price.'"> 
    <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest" > 
    <input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" id="payWithPayPalButton" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
    <img alt="" border="0" src="https://www.paypalobjects.com/pl_PL/i/scr/pixel.gif" width="1" height="1"> 
    </form> 
      '); 
?> 

И Аякс запрос следующим образом:

$.ajax({ 
    type: "POST", 
    url: "classes/acceptOfferFunction.php", 
    data: { 
     hash: getURLParameter('hash'), 
     hash2: getURLParameter('hash2') 
    }, 
    success: function (result) { 

    } 
}); 

ответ

2

Проблема здесь в том, что ваш запрос Ajax будет отменен, потому что страница будет перезагружена (фактически перенаправлено на paypal).

Что вы можете сделать, это отправить запрос ajax при отправке формы и подождать до окончания запроса ajax. Затем отправьте форму.

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" onsubmit="return ajaxRequest()" method="post" id="payWithPayPalForm"> 

onsubmit Использование, когда пользователь отправляет форму, функция ajaxRequest будет уволен. Поскольку мы возвращаем ранее, форма будет ждать возврата функции для продолжения.

  • если ajaxRequest() return true, форма будет отправлена.
  • если он возвращает false, он не будет.

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

Смежные вопросы