2013-03-14 39 views
0

我有一個PayPal按鈕,它將表單提交給表單的action=""屬性中指定的url。我希望這個按鈕可以在提交表單的同時(或大致相同)觸發ajax調用。貝寶按鈕提交表單並同時觸發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請求如下:

$.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()返回true,表單將被提交。
  • 如果它返回false,它不會。

這是POC。你有更好的方式來以非阻塞的方式處理它(例如,在表單ID上使用jQuery)。你也必須編寫這個函數。