在paypal之前提交表单值

时间:2013-09-27 01:40:09

标签: jquery ajax forms paypal paypal-ipn

我正在尝试覆盖下面的paypal提交表单,在提交之前运行一些ajax,但由于某些原因,所有内容直到提交实际表单都有效。

Paypal表格

<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();无法正常工作的见解

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:-1)

最后出于某种原因想出了这个问题,我仍然不确定为什么,但是提交按钮需要放在表单标签的一边,然后才能正常工作。如果有人知道为什么会这样,我很想知道