jquery - 想要阻止页面重新加载/离开直到 Ajax 请求完成

标签 jquery ajax

我正在开发一个项目,在该项目中我实现了 AJAX 请求以将复杂数据存储到数据库中。我想阻止用户重新加载/离开页面,直到 AJAX 请求完成。我尝试在 AJAX 中添加 async: false 但没有成功。

$.ajax({
  headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  },
  url: "{{url('api/place-order')}}",
  type: "post",
  async: false,
  data: data,
  processData: false,
  contentType: false,
  cache: false,
  success: function(response) {
    console.log("success)
  }
});

提前致谢。

最佳答案

你不能。过去,某些浏览器允许同步 ajax 调用,但大多数浏览器不再允许。

Chrome(也许还有其他浏览器)最近开始支持一个实验性 API ( sendBeacon ),它允许您执行 ajax 调用,即使它不会阻止关闭页面,该调用也会完成从用户的角度来看。但如果你真的想推迟关闭页面,你就不能这样做。但是 sendBeacon 对于主动告诉服务器用户(可能)正在离开(作为超时的辅助手段)可能很有用。 (“也许”,因为当然,他们可能只是刷新页面或导航到同一应用程序/网站中的另一个页面。)

关于jquery - 想要阻止页面重新加载/离开直到 Ajax 请求完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57604942/

相关文章:

javascript - 如何验证 yyyy-mm-dd hh :mm:ss format

javascript - 如何找出用户在 Javascript 中选择了哪个单选按钮?

javascript - 如何从父级访问 iframe 内的 DIV

java - 如何使用ajax从servlet获取数据?

jquery - JQuery : How to get the unparseable string?中的parsererror

javascript - 表单多次提交

ruby-on-rails - 如何关闭 "periodically_call_remote"

javascript - 使用 Javascript 和/或 jQuery 将每周数据转换为每月数据

javascript - 在以下情况下如何显示图像加载器,直到来自 AJAX 请求的响应出现?

javascript - 如何向 ajax 文件上传添加额外的 POST 参数?