我们能得到Ajax调用的状态吗,比如20%完成了

Can we get the status of Ajax call, like 20% completed?

本文关键字:比如 状态 Ajax 调用 我们      更新时间:2023-09-26

我正在调用一个ajax调用来验证n个数据。
因为它需要很多时间来完成,我想到向用户显示进度条或告诉1/n完成
为了显示它,我应该从控制器获取状态。

有人能告诉我是否有任何方法在完成之前从控制器获得状态?或者有没有其他更好的方法来实现。

由于普通AJAX是典型的请求-响应,因此无法从具有相同连接的服务器获取进度信息。您必须进行一个新的AJAX调用来向服务器询问任务进度。这被称为心跳池技术。

更好的解决方案是使用某种持久连接,例如Websockets。这样,服务器就可以通过启动任务的同一连接向客户端推送带有进度信息的消息。Websocket在浏览器中的使用率很高。

XMLHttpRequest监控进度:

见这里:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress

更多:如何从XMLHttpRequest获取进度

看起来是标准的https://www.w3.org/TR/progress-events/firing-events-using-the-progressevent-interface-for-http