如何在ajax发布后启用或触发提交事件

时间:2011-11-28 23:26:00

标签: php jquery

如何在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上获得永久循环,但表单未提交。

2 个答案:

答案 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?)

在页面加载时附加提交处理程序一次。