如何在ajax发布后启用或触发提交事件?
例如,我有这个表格,我不想提交,
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="item_name_1" value="Book 1" />
...
<input type="submit" name="pay" value="Check Out" />
</form>
直到调用此页面 - session_end.php
,
unset($_SESSION[SESSION_CART]);
unset($cart);
jquery的,
$("input[name=pay]").click(function(){
$("#form-paypal").submit(function(){
$.post('re_post.php', {}, function() {
// I get eternal loop if I use either of these lines below,
//$("#form-paypal").trigger('submit');
//$("#form-paypal").submit();
});
return false;
})
});
我将在此页re_post.php
上获得永久循环,但表单未提交。
答案 0 :(得分:2)
你真的不需要$("input[name=pay]").click
处理程序。一个简单的.submit()
事件处理程序注册就足够了。
就无限循环问题而言,您可以将.data()
附加到表单以跟踪状态并避免无限循环:
$(function() {
$('#form-paypal').submit(function() {
if (!$(this).data('valid')) {
// we are entering here the first time we try to submit
$.post('re_post.php', { }, function() {
// we set the data so that when we trigger the submission we
// don't perform any more AJAX requests and avoid the infinite loop
$('#form-paypal').data('valid', true).submit();
});
return false;
}
return true;
});
});
答案 1 :(得分:0)
当您点击提交按钮时,即使是表单也会被提交。
你现在正在做的事很奇怪。每次单击“提交”按钮时,都会添加另一个提交处理程序(执行ajax然后再次调用submit?)
在页面加载时附加提交处理程序一次。