正在进行的Ajax请求页面重新加载
我们有报告页面,用户可以从中导出CSV格式的报告。 在C# MVC
服务器上,我们创建MemoryStream
并在数据转换后写入每一行,最后将响应作为File
发送。 完成请求后,浏览器会自动下载此文件。 由于报告需要很长时间才能生成,因此用户必须在阻塞状态下等待它。
为了解决这个问题,我发送了Async Ajax request
并通过创建Blob URL
将响应保存为CSV file
。
这很好用如果用户停留在报告页面上,直到所有报告都被下载,但如果用户从报告页面导航到其他页面,则Ajax request response
会丢失。
所以我有一些以下问题
- 在页面重新加载时
Ajax request
正在发生什么 - 页面重新加载取消在服务器上启动和正在进行的请求
- 如果浏览器已经重新加载页面,服务器响应会发生什么
- 有没有办法在重新加载之后保持这种请求,这需要进一步
-
当用户导航时,服务器将继续编译报告。
-
没有。
-
它无处可去。 浏览器有一个“新”页面,没有待处理的请求; 它不知道任何先前的活动(HTML是无状态的)。
-
不。也许您可以安装onBeforeUnload事件处理程序,该处理程序将警告用户并允许他们留在页面上。 但是有些浏览器会忽略该事件上的任何事件处理程序,因此很难使其可靠。
你最好的选择可能是界面变化。 在浏览页面上发布通知将取消他们正在等待的任何报告。 并为用户提供一种简单的方法来了解他们的报告正在准备中,例如html加载gif。