【问题标题】:jQuery perform action through AJAX before sending form does not workjQuery 在发送表单之前通过 AJAX 执行操作不起作用
【发布时间】:2014-03-30 23:05:14
【问题描述】:

我需要在提交表单时通过AJAX将一些数据保存到数据库中,然后恢复表单的默认操作并提交到PayPal。 这样完成后,数据成功保存在数据库中,但表单不再提交。

$('#saveBeforePay').on('submit', function(e){
    e.preventDefault();
    $.post('ajax/save-cart', $(this).serialize())
    .done(function(response){
        if ( response == 200 ) {
            return true;
        }
    });
});

我试过的另一种方法是这个

$('#saveBeforePay').on('submit', function(e){
    $.post('ajax/save-cart', $(this).serialize())
    .done(function(response){
        if ( response != 200 ) {
            e.preventDefault();
        }
    });
}); 

现在表单提交了,但数据没有保存到数据库中。我从网络标签中获取此信息

请求标头注意:显示临时标头 而Status TextCanceled

这里有什么问题?

编辑:工作代码

$('#saveOrder').on('click', function(e){
    e.preventDefault();
    var token = $('.token').val();
    $.post('ajax/save-cart', {token: token})
    .done(function(response){
        if ( response == 200 ) {
            $('#saveBeforePay').submit();
        }
    });
});

【问题讨论】:

    标签: jquery ajax preventdefault


    【解决方案1】:

    我通常对这样的事情做的是在表单中有一个锚标记并将初始事件绑定到该标记而不是表单提交

    $('a#submit').on('click', function () {
        $.post('foo', {}).done(function () {
             $(this).closest('form').trigger('submit');
        });
    
    });
    

    这样你不会阻止正常的表单执行,所以你可以在你想使用它的时候调用提交事件。

    【讨论】:

    • 没问题,很高兴为您提供帮助。记得将此标记为答案;)
    • 可以,只需等待 5 分钟
    猜你喜欢
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多