使用Ajax提交表单,使用回调异步提交

生命查询

我意识到SO充满了有关此主题的材料,我已经经历了它,但是似乎无法使它起作用。

我的函数接受一个JSON响应,对其进行解析,并在成功时返回false,在错误时返回true(这是有意向后的)。

console.log显示我得到了正确的响应,但是我的函数不会返回(submitme尽管它已更改为true回调内部,但仍为false )。因此,该函数始终返回false。

我猜我的回调操作有问题,但是我不确定自己做错了什么。
我可能不在这里,但我认为回调是可以的,它只是在脚本执行后才执行(因此是异步的)。
但是我的问题仍然存在,如果仅通过ajax更改布尔值,在这种情况下如何让表单提交true?

这是我的摘录:

$(".form").submit(function(){
    error = $("#error");
    var submitme = false;

    function ajaxCall(url, type, data, callback) {
    $.ajax({
        url: url,
        type: type,
        data: data,
        success: function(response){
            try {
            obj = JSON.parse(response);
            text = obj.Error;
            error.html('');
            error.append(text);
            //if the json was parsed, return false
            submitform = false;
            }
            catch (error) {
                //if an error was thrown, return true
                submitform = true;
                }
            callback(submitform);
        },
    });

    }

    function ajaxCallSuccess(submitform) {
        console.log(submitform); //This shows correct output!
        if (submitform == 'true'){ //Here I want to manipulate the global submitme variable so I can submit the form on "true"
            submitme = true; //<-- this (I think) changes the global variable asynchronousy (so after the function is read), hence the outer function always returns false
        }

    };

    ajaxCall(url, type, data, ajaxCallSuccess);


    if (submitme == true) {
        return true;
    }
    else {
        return false;
    }
});

编辑:
我编辑的帖子,也许可以澄清一下问题

达林·迪米特罗夫(Darin Dimitrov)

您需要始终返回false,然后手动提交表单,以防AJAX调用成功:

$('.form').submit(function() {
    function ajaxCall(url, type, data, callback) {
        $.ajax({
            url: url,
            type: type,
            data: data,
            dataType: 'json',
            success: function(response) {
                callback(true);
            },
            error: function() {
                callback(false);
            }
        });
    }

    var form = $(this);

    function ajaxCallSuccess(submitform) {
        if (submitform) {
            // submit the form here:
            form[0].submit();
        }
    };

    ajaxCall(url, type, data, ajaxCallSuccess);

    return false;
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

解决recaptcha,无需表单提交/单击按钮(使用回调)

来自分类Dev

使用Ajax提交表单

来自分类Dev

使用回调函数时,jQuery表单提交不起作用

来自分类Dev

使用回调函数时,jQuery表单提交不起作用

来自分类Dev

Ajax表单使用Bootstrap提交Rails之后的回调

来自分类Dev

cakePHP使用ajax提交表单

来自分类Dev

使用AJAX提交表单laravel

来自分类Dev

使用AngularJS / AJAX提交表单

来自分类Dev

使用ajax的Grails提交表单

来自分类Dev

使用 PHPMailer 提交 ajax 表单

来自分类Dev

使用 javascript - AJAX 提交表单

来自分类Dev

表单未使用加载回调提交

来自分类Dev

Python/Kivy:使用回车键提交表单

来自分类Dev

当提交按钮在表单外部时,使用$ .ajax提交表单

来自分类Dev

单击提交按钮时,无法使用jquery / AJAX提交表单

来自分类Dev

表单未提交并使用Jquery Ajax验证的Recaptcha提交

来自分类Dev

使用jquery ajax提交表单,按钮类型不是提交类型

来自分类Dev

如何使用AJAX / jQuery / JavaScript提交表单?

来自分类Dev

如何使用jquery或ajax单击提交表单

来自分类Dev

使用ajax提交symfony2表单

来自分类Dev

使用JQuery提交由Ajax加载的表单

来自分类Dev

在功能测试中使用Ajax提交表单

来自分类Dev

使用onsubmit同时提交表单和Ajax?

来自分类Dev

使用ajax上传图像并提交表单

来自分类Dev

如何使用onclick提交Rails AJAX表单

来自分类Dev

Rails表单未使用Ajax提交更改

来自分类Dev

使用ajax提交表单,然后禁用按钮

来自分类Dev

使用JS和AJAX提交表单

来自分类Dev

回声表单使用AJAX提交给div