0

フォームのaction=""属性で指定された URL にフォームを送信する 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="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="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) {

    }
});
4

1 に答える 1

2

ここでの問題は、ページがリロードされる(実際にはペイパルにリダイレクトされる)ため、ajaxリクエストがキャンセルされることです。

あなたができることは、フォームを送信するときにajaxリクエストを送信し、ajaxリクエストが終了するまで待つことです。次に、フォームを送信します。

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

を使用してonsubmit、ユーザーがフォームを送信すると、関数ajaxRequestが実行されます。前にreturnを置いたので、formは関数のreturnが続くのを待ちます。

  • trueを返すと、ajaxRequest()フォームが送信されます。
  • falseを返す場合、そうではありません。

これはPOCです。邪魔にならない方法でそれを処理するためのより良い方法があります(たとえば、フォームIDでjQueryを使用します)。また、関数もコーディングする必要があります。

于 2013-03-14T18:08:33.167 に答える