贝宝

2013-09-27 66 views
0

之前提交表单值我试图覆盖下面的贝宝提交表单提交之前,运行一些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 protected]"> 
    <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> 

阿贾克斯应该运行,然后提交上述形式

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

任何洞察力,为什么$('#payWithPaypal').submit();不能正常工作,将不胜感激

回答

-1

最后想出了这个出于某种原因,我仍然不确定为什么,但提交按钮需要放在窗体的一面标签,然后它就像它应该那样工作。如果有人知道这是为什么我很想知道

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>