提交表单不jQuery的AJAX调用停止提交表单不jQuery的AJAX调用停止(submit fo

2019-05-12 08:45发布

我有以下代码:

$.ajax({
    type: "POST",
    async: false,              
    url: "CheckIdExist",
    data: param,
    success: function(result) {
        if (result == true){
            return false;
        }                                 
    },
    error: function(error) {
        alert(error);
        return false;
    }
});

如果AJAX返回值为true,窗体需要停止提交。

但它不会停止提交表单。

任何帮助,请。

Answer 1:

我假设你有这样的:

form.submit(function(event) {
    $.ajax(...);
});

你想return false (或调用event.preventDefault()在事件处理函数本身,而不是在AJAX调用,如:

form.submit(function(event) {
    $.ajax(...);
    event.preventDefault();
});


Answer 2:

这个问题的细微变化是:我想用jQuery和Ajax来呈现一个错误信息给用户,但后来做的正常处理,如果没有错误。

假设法“检查”返回空,如果没有错误的响应,并且有错误(收费),如果有任何。

然后,你可以做这样的事情在你准备好功能:

$("#theform").submit(function() {
    var data = { ... }
    $.get('/check', data,
        function(resp) {
            if (resp.length > 0) {
                $("#error").html(resp);
            } else {
                $("#theform").unbind('submit');
                $("#theform").submit();
            }
    });
    event.preventDefault();
});

那么它是怎样工作的? 当外提交功能被触发,它建立所需AJAX调用(这里的高层次功能GET)数据。 通话计划,并且运行的主线程立即继续,但提交无条件地停止了,所以没有什么明显的反应。

经过一段时间,和AJAX调用返回请求的结果。 如果非空,则结果被示出给用户。

如果响应是空的,但是,提交功能绑定。 这可以防止ssytem通过外提交功能进行额外的呼叫。 内提交函数被调用。 这会触发一个实际的形式提交表单的目标,并预期生活还要继续。



Answer 3:

你需要做一个回调。

在FAQ此项目对我帮助很大,当我有这个确切的问题。

getUrlStatus('getStatus.php', function(status) {
    alert(status);
});

function getUrlStatus(url, callback) {
    $.ajax({
        url: url,
        complete: function(xhr) {
            callback(xhr.status);
        }
    });
}

其原因是,你不能在一个AJAX函数返回。

上面的代码不会如所希望的,由于异步编程的性质工作。 所提供的成功处理程序不立即调用,而是在将来的某个时候响应从服务器接收。 所以,当我们在$就调用后立即使用“状态”变量,它的价值仍然不确定。



Answer 4:

你不能把这个代码在一个函数或一个形式的onsubmit,成功函数返回它的结果返回给jQuery的AJAX的背景下,而不是形式提交环境。



Answer 5:

在这种情况下,你需要执行同步HTTP请求,即你必须设置异步选项设置为false。
在你的版本httpxmlrequest是异步的。 它可能会结束很久之后你的onsubmit处理已返回和的onSuccess回调进行调用onsubmit处理程序的上下文。
匿名函数功能(结果){...}而不是onsubmit处理程序的返回值的“返回false”将返回值。



Answer 6:

我也有这个问题,但通过改变输入类型=“提交”,键入=“按钮”,然后就做你的Ajax请求解决它

   $("input#submitbutton")
    {
                          $.ajax(
                        {                         type: "POST",
                             async: false,              
                            url: "CheckIdExist",
                             data: param,
                            success: function(result) {
                                 if (result == true){
                                    //TODO: do you magic
                                 }                      
                                 else
                                  $("form").submit();           
                             },
                             error: function(error) {
                                alert(error);
                                return false;
                            }
                        });
    });


文章来源: submit form does not stop in jquery ajax call