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

时间:2012-05-27 13:12:46

标签: php ajax

  1. 用户点击一些执行某个ajax请求的链接 - 假设此请求需要20秒。
  2. 在请求完成之前,用户点击oder链接,将整个页面重定向(无ajax)到另一个页面。
  3. ajax请求会发生什么?它总是在服务器端完成,但响应不会到来吗?或者也许服务器端的ajax请求会被立即“杀死?”

    我问,因为我有一些脚本需要一些时间才能运行,但用户现在不需要结果 - 它只是火和忘记 - 也许在ajax中甚至有一些选项强制它不发送任何响应?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

服务器将完成请求,不知道客户端已经移动了。"服务器将像往常一样将响应返回给客户端。客户端将忽略响应。

因此,期望服务器端的所有内容都能正常发生,因此"触发并忘记"方法将起作用(因为客户已经移动并且已经忘记")。但是如果你想做任何客户端的响应(这会否定"忘记"部分)那么新页面就无法拦截响应。浏览器会忽略它。