0

以下のpaypal送信フォームをオーバーライドして、送信前にajaxを実行しようとしていますが、何らかの理由で実際のフォームを送信するまですべてが機能しています。

ペイパルフォーム

<form name="_xclick" id="payWithPaypal" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick">
    <input type="hidden" name="business" value="email@website.com">
    <input type="hidden" name="currency_code" value="USD">
    <input type="hidden" name="item_name" value="Item Name Here">
    <input type="hidden" name="amount" value="12">
    <input type="hidden" name="return" value="http://www.website.com">
    <input type="hidden" name="notify_url" value="http://www.website.com/ipn.php">
    <input type="submit" id="submitPaypal" class="mailsubmit" value="Pay Now" border="0" name="submit">
</form>

送信ボタンのオーバーライド

<script>
    $(function(){
        $('#submitPaypal').on("click", function(e){
            event.preventDefault();
            tailor();
        });
    });
</script>  

実行して上記のフォームを送信する必要がある Ajax

   <script type="text/javascript">
        function tailor(){
             $.ajax({
                url: "info.php",
                type: "POST",
                data: {NAME:"test"},
                success: function(data){
                     $('#payWithPaypal').submit();
                }
           });
        }
    </script>

なぜ機能しないのかについての洞察$('#payWithPaypal').submit();は大歓迎です

4

2 に答える 2

4

event.preventDefault();ボタンのクリックにバインドしても、フォームの送信は妨げられません。.ajax()これが、送信ボタンがフォームの外に配置されている場合にのみ機能する理由です。

代わりに次のようなものをお勧めします。

<script type="text/javascript">

$('#payWithPaypal').submit(function(e) {

    var self = this;

    e.preventDefault();

  $.ajax({
      url: 'info.php',
      type: 'post',
      data: $(':input', self),
      success: function(json) {
        self.submit();
      }
    });
});

</script>
于 2014-04-01T19:26:58.617 に答える