关于AJAX,需要单击两次提交按钮

时间:2014-07-18 14:10:48

标签: javascript jquery ajax forms

我的ajax代码如下所示:

 $("#form").submit(function(event){

        var $form = $(this);
        var serializedData = $form.serialize();
        var $inputs = $form.find("input, select, button, textarea");

        request = $.ajax({
            url: "/blog/ajaxphp/registration_check.php",
            type: "post",
            data: {formData:serializedData},
            datetype: "JSON"
        });
        request.done(function (response, textStatus, jqXHR){
            if(jQuery.parseJSON(response).success==undefined){
                $form.unbind('submit');
                $form.submit();
            }
        });
        request.fail(function (jqXHR, textStatus, errorThrown){
        });
        event.preventDefault();


    });

问题: 我需要单击提交按钮两次,否则此表单未提交。 我尝试使用return false而不是preventdefault,并尝试$form.unbind('submit');但没有工作。

如何通过单击

使提交按钮工作

1 个答案:

答案 0 :(得分:1)

在request.done事件中,如果未定义成功,则返回true。您可以考虑在未定义成功时取消绑定并重新提交表单,或者将所有部分一起删除,只显示一条消息,表明该表单无法提交并应再次尝试。值得一试的是,简化过程是否会产生您想要的结果。

我也会删除event.preventDefault();并在request.fail事件中返回false。

我假设你正在做这一切,因为你不想在ajax调用完成之前提交表单,所以你可能想尝试在$ .ajax请求中添加async:false:

$("#form").submit(function(event){

    var $form = $(this);
    var serializedData = $form.serialize();
    var $inputs = $form.find("input, select, button, textarea");

    request = $.ajax({
        url: "/blog/ajaxphp/registration_check.php",
        type: "post",
        data: {formData:serializedData},
        async: false,
        datetype: "JSON"
    });
    request.done(function (response, textStatus, jqXHR){
        if(jQuery.parseJSON(response).success==undefined){
            $form.unbind('submit');
            $form.submit();
        }
        else
        {
            return true;
        }
    });
    request.fail(function (jqXHR, textStatus, errorThrown){
            return false;
    });
});