在 ajax 请求完成之前更改 location.href 时会发生什么


What will happen when location.href is changed before ajax request completes?

  1. 用户单击某个执行某个 ajax 请求的链接 - 假设此请求需要 20 秒。
  2. 在请求完成之前,用户单击链接,将(无ajax)整个页面重定向到另一个页面。

ajax 请求会发生什么?它将始终在服务器端完成,但响应不会随处可见?或者,也许服务器端的 ajax 请求会被立即"杀死"?

我问是因为我有一些脚本需要一些时间来运行,但用户现在不必知道结果 - 它只是触发并忘记 - 也许 ajax 中甚至有一些选项可以强制它不发送任何响应?

浏览器应该终止 AJAX 请求,关闭与服务器的连接;但是,这并不意味着您在服务器上的处理也一定会被终止: ignore_user_abort()

服务器将完成请求,不知道客户端已"继续"。 服务器将像往常一样将响应返回给客户端。 客户端将简单地忽略响应。

因此,

期望服务器端的所有事情都正常发生,因此"即发即弃"方法将起作用(因为客户端已继续前进并"忘记")。 但是,如果您想在客户端执行任何响应(这将否定"忘记"部分),那么新页面无法拦截响应。 浏览器将忽略它。