javascript - 无法阻止基于ajax检查的提交

标签 javascript jquery ajax preventdefault

我是一个 java/jquery 新手,正在努力解决以下问题:

$(document).ready(function() {
//Prevent SUBMIT if Session setting = On (Ajax)
$('#formID').submit(function(e) {
    var prevent = false;
    $.ajax({
        type: "POST",
        url: "url/to/ajax_file.php",
        cache: false,
        success: function(res){
            if(res == "On") { alert('Session is ON so submit should be prevented'); prevent = true; }
        }
    });
    if (stop2) { e.preventDefault(); }
});

});

session 设置返回正常,并显示警报。但如果 session 设置返回=“打开”,我也想阻止表单提交。这并没有发生。显然有一些我不明白的地方,有什么建议吗?

最佳答案

由于 ajax 请求的异步性质,您不能这样做,而是在提交处理程序中您需要直接阻止默认操作,然后在 ajax 处理程序中您可以通过编程方式提交表单。

$(document).ready(function() {
  //Prevent SUBMIT if Session setting = On (Ajax)
  $('#formID').submit(function(e) {
    e.preventDefault();
    var form = this;
    $.ajax({
      type: "POST",
      url: "url/to/ajax_file.php",
      cache: false,
      success: function(res) {
        if (res == "On") {
          alert('Session is ON so submit should be prevented');
        } else {
          form.submit();
        }
      }
    });
  });
});

关于javascript - 无法阻止基于ajax检查的提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35285586/

相关文章:

JavaScript do while 挂起并导致浏览器内存不足

Javascript HTML 选择下拉菜单

javascript - jQuery UI 和 AngularJS UI 路由器中的 DOM

javascript - 如何删除图表中不需要的空间

javascript - jQuery 插件中对象没有方法 'charAt'

javascript - 延迟js加载的最佳方法?

javascript - 使用ajax将post数据从js发送到php而不进行类型转换

javascript - 使用 javascript 计算并应用较深的背景颜色

javascript - ionic 组件中的两种方式数据绑定(bind) "alertcontroller"

jquery - 如何通过在网站jquery的其他地方点击关闭菜单