javascript - 如何暂停提交事件直到 AJAX 事件完成?

标签 javascript jquery ajax

我有一个表单和一个提交。如果有东西被填满,在提交之前我想确保它是一个好的值(使用 ajax),如果是这样,那么我只能让它继续。所以,

$('#contact').submit(function() {
  // ajax
  $.ajax({
    type: 'POST',
    url: $(this).attr('ajaxgetaccommodationsbyemail'),
    success: function(answer) {
        here a popup window opens, which waits  until I press YES or NO
    },
    async: false
  });

   this is when return TRUE or FALSE
   there should be something like
   do while (popupWindowClosed)
   so $.when is not an option

});

最佳答案

可以用jQuery阻止提交,然后真正调用原生提交发送表单

$('#contact').on('submit', function(e) {

    e.preventDefault();

    var form = this;

    $.ajax({
        type: 'POST',
        url: $(this).attr('ajaxgetaccommodationsbyemail'),
        success: function(answer) {
             popup(function(yesorno) {

                 if (yesorno) {
                     form.submit();
                 }

             });
        }
    });
});

并且删除了 async:false,因为您应该永远执行同步 ajax。

关于javascript - 如何暂停提交事件直到 AJAX 事件完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35073151/

相关文章:

javascript - 用户输入规则后,如何在 div 中动态应用 css 规则

javascript - 如何让 Foundation Reveal Modal 在 Rails 中工作?

javascript - C# mvc - Controller 返回部分 View 或 json 数据

javascript - 将函数分配给使用 PHP 脚本创建的选择

javascript - 如何在 Javascript/Jquery 中删除选定的文件

php - $post 不适用于 jquery mobile

javascript - 如何监听另一个对象的事件发射?

javascript - 无法将数组值传递给单击函数

html - Css 未添加到在 IE 中动态加载的内容

javascript - ES6 和 "Who imported me"?