在页面重新加载时正在进行的Ajax请求会发生什么

时间:2017-01-03 18:04:53

标签: javascript c# jquery ajax

我们有报告页面,用户可以从中导出CSV格式的报告。在C# MVC中的服务器上,我们创建MemoryStream并在数据转换后写入每一行,最后将响应发送为File。完成请求后,浏览器会自动下载此文件。由于报告需要很长时间才能生成,因此用户必须在阻塞状态下等待它 为了解决这个问题,我发送了Async Ajax request并通过创建CSV file将响应保存为Blob URL。 此工作正常如果用户停留在报告页面上,直到下载了所有报告,但如果用户从报告页面导航到其他页面Ajax request response则会丢失。
所以我有一些以下问题

  1. 页面重新加载
  2. 中正在进行的Ajax request会发生什么
  3. 页面重新加载取消请求已在服务器上启动和正在进行
  4. 如果浏览器已重新加载页面
  5. ,服务器响应会发生什么情况
  6. 有没有办法在重新加载之后保持这样的请求,这需要进一步

1 个答案:

答案 0 :(得分:7)

  1. 当用户离开时,服务器将继续编译报告。

  2. 没有

  3. 无处可去。浏览器有一个“新”页面,没有待处理的请求;它不知道任何先前的活动(HTML是无状态的)。

  4. 没有。也许您可以使用onBeforeUnload事件处理程序来警告用户并允许他们留在页面上。但有些浏览器会忽略该事件的任何事件处理程序,因此很难使其可靠。

  5. 你最好的选择可能是界面变化。在浏览页面上发布通知将取消他们正在等待的任何报告。并为用户提供一种简单的方法来了解他们的报告正在准备中,例如html加载gif。