Javascript 如何在表单提交之前防止AJAX请求被取消?

Javascript 如何在表单提交之前防止AJAX请求被取消?,javascript,jquery,ajax,forms,Javascript,Jquery,Ajax,Forms,我有一个表单提交处理程序,需要在“默认”表单提交发生之前进行AJAX调用 $('#form').on('submit', function (event) { { ... } $.ajax({ type: "POST", data: data, url: "/submit" }).done(function() { { ... } // Do default form action here

我有一个表单提交处理程序,需要在“默认”表单提交发生之前进行AJAX调用

$('#form').on('submit', function (event) {
    { ... }
    $.ajax({
        type: "POST",
        data: data,
        url: "/submit"
    }).done(function() {
        { ... }
        // Do default form action here
        return true;
    });
});
ajax调用上面的代码会运行,但一旦ajax调用完成,表单就会提交,我就会被重定向到操作URL


如何防止在调用AJAX回调之前发生默认表单提交

async:false
参数添加到
ajax
方法中。这将使您的调用同步,表单将在ajax请求完成后立即提交。

可能的重复似乎总是一个可怕的模式,为什么要提交两次?我正在为第三方系统创建一个插件,该系统正在修改来自几个不同来源的数据。这是一种可怕的模式,但我不知道该系统还有其他方法。将ajax请求设置为同步从来都不是一个好的选择。让我引述:“JavaScript在浏览器的UI线程中运行,任何长时间运行的进程都会锁定UI,使其无响应。此外,JavaScript的执行时间有一个上限,浏览器会询问用户是否继续执行。所有这些都是非常糟糕的用户体验。用户无法判断是否一切正常。此外,对于连接速度较慢的用户,效果会更糟。”更多