javascript - 页面重新加载时进行中的 Ajax 请求会发生什么

标签 javascript c# jquery ajax

<分区>

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

  1. 在页面重新加载时处理 Ajax 请求会发生什么
  2. 页面重新加载是否取消在服务器上发起并正在进行的请求
  3. 如果浏览器已经重新加载页面,服务器响应会发生什么
  4. 有没有办法在需要进一步重载后保持这样的请求

最佳答案

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

  2. 没有。

  3. 它无处着陆。浏览器有一个没有待处理请求的"new"页面;它不知道任何先前的事件(HTML 是无状态的)。

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

您最好的选择可能是界面更改。在页面上放置一个通知,指出离开将取消他们正在等待的任何报告。并为用户提供一种简单的方法来了解他们的报告正在准备中,例如 html 加载 gif。

关于javascript - 页面重新加载时进行中的 Ajax 请求会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41449700/

相关文章:

javascript - 在启动之前请求用户应用程序时出错

Javascript - 匹配此数据表示的正则表达式

c# - 使用 pythonnet 从 python 调用 C# 代码

c# - SAX 与 XmlTextReader - C# 中的 SAX

jquery - 如何使用 jQuery 或 vanilla JS 检测链接是否隐藏在折叠的 Twitter Bootstrap 导航栏中

javascript - 使用 JavaScript 如何使用 for 循环递增数组中的数字?

javascript - 有没有办法将 ngClass 附加到伪类?

c# - 在外部单击时如何隐藏控件?

javascript - 将 bootstrap.js 添加到 browserify?

php - 在程序使用 ajax 检查用户名可用性后插入查询时遇到问题