我试图覆盖下面的 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();
不起作用的见解将不胜感激
最佳答案
绑定(bind)到按钮点击的 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>
关于jquery - paypal前提交表单值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041400/