javascript - 如何停止表单提交,直到 onSubmit 调用的 ajax 函数完成

标签 javascript jquery ajax forms

我的代码如下。我希望表单在 ajax 函数完成之后提交,这样就可以正确设置 submit 变量。但 submit 始终具有默认的 false 值。如何让表单等待 ajax 调用完成并且为 submit 变量赋予新值?

$("#CreateCandidateForm").on('submit', function (event) {
    var theFirstName = $("#FirstName").val();
    var theLastName = $("#LastName").val();
    var submit = false;

    $.ajax({
        type: "POST",
        url: "CreateSearch", // the method we are calling
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify({ firstName: theFirstName, lastName: theLastName }),
        dataType: "json",
        success: function (result) {
            if (result == false) {
                submit = true;
            }                     
        },
        error: function (exception) {
            event.preventDefault();
            console.log(exception);
            alert('Exception: ' + exception);        
        }
    });    
    return submit;
});

最佳答案

jQuery.when() 提供一种基于零个或多个对象(通常是表示异步事件的延迟对象)执行回调函数的方法。

当ajax请求成功时,它会设置submit = true。

$.when( $.ajax({

          type: "POST",
          url: "CreateSearch", 
          contentType: "application/json; charset=utf-8",
          data: JSON.stringify({ firstName: theFirstName, lastName: theLastName })

       })).then( 

           function(result ){ // Success function
             if (result == false) {
                 submit = true;
             }

           },function(exception){ // failure function
                event.preventDefault();
                console.log(exception);
                alert('Exception: ' + exception);  
         });

关于javascript - 如何停止表单提交,直到 onSubmit 调用的 ajax 函数完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37979322/

相关文章:

javascript - 使用for循环求和

ajax - 使用 onChange 事件调用 remoteForm 只更新一个 div

ruby-on-rails - 在 Rails 中通过 ajax 渲染 Ancestry 嵌套评论的回复表单

javascript - Soundcloud API 分页 - 8000 的偏移量限制是否意味着您无法获得长度超过 8000 的完整列表?

javascript - jQuery 插件在 jQuery 之前加载

javascript - 使浏览器自动固定布局的最佳实践

javascript - 测试 javascript 代码是否存在跨浏览器问题

javascript - 动画()不连续工作

JQuery Fancybox 不工作

ajax - 结果显示为空