微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – jQuery – 在ajax调用后恢复表单提交

是否可以阻止表单提交,然后在ajax调用成功中重新提交相同的表单?

目前它获得了成功,但它没有重新提交应提交的表单并将用户重定向http://example.com网站.

非常感谢您提前提供任何帮助

如果不可能这样做,还有另一种方法可以让它发挥作用吗?

$(document).ready(function() {
    $('form').submit(function(e) {
        e.preventDefault();

        $.ajax({
            url: $('form').attr('action'),type: 'post',data: $('form').serialize(),success: function(data) {
                if (data == 'true')
                {
                    $('form').attr('action','http://example.com');
                    $('form').unbind('submit').submit(); // mistake: changed $(this) to $('form') - Problem still persists though it does not resubmit and redirect to http://example.com
                }
                else
                {
                    alert('Your username/password are incorrect');
                }
            },error: function() {
                alert('There has been an error,please alert us immediately');
            }
        });
    });
});

编辑:

Stackoverflow帖子签出以下代码

> Resume form submission after $.ajax call
> How to reenable event.preventDefault?

我只是想我提到我也试过这个代码而没有用.

var ajaxSent = false;
$(document).ready(function() {
    $('form').submit(function(e) {

        if ( !ajaxSent)
            e.preventDefault();

        $.ajax({
            url: $('form').attr('action'),success: function(data) {
                if (data == 'true')
                {
                    alert('submit form');
                    ajaxSent = true;
                    $('form').attr('action','http://example.com');
                    $('form').submit();
                    return true;
                }
                else
                {
                    alert('Your username/password are incorrect');
                    return false;
                }
            },please alert us immediately');
                return false;
            }
        });
    });
});

我也试过这个代码而没有任何运气.

$(document).ready(function() {
    $('form').submit(function(e) {
        e.preventDefault();

        $.ajax({
            url: $('form').attr('action'),'http://example.com');
                    $('form').unbind('submit').submit();
                    return true;
                }
                else
                {
                    alert('Your username/password are incorrect');
                    return false;
                }
            },please alert us immediately');
                return false;
            }
        });
    });
});

解决方法

解决方案非常简单,涉及在.ajax()中添加和设置async为false.另外,我已经重新编写了代码来处理提交按钮,而是在AJAX成功通过时提交表单.

这是我的工作代码

$(document).ready(function() {
    var testing = false;
    $('#btn-login').on('click',function() {
        $.ajax({
            url: $('form').attr('action'),async: false,success: function(data) {
                if (data == 'true')
                {
                    testing = true;
                    $('form').attr('action','https://example.com');
                    $('form').submit();
                }
                else
                {
                    alert('Your username/password are incorrect');
                }
            },please alert us immediately');
            }
        });

        return testing;
    });
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐