我有一个 div:
<div id="content"></div>
当页面加载时,我调用一个.load()
. 此加载大约需要 10 分钟才能完成,并且在执行期间,其 PHP 文件会返回一些有关执行状态的信息,例如 Linux 加载。我想#content
动态地将这些信息放入 div 中,但.load()
仅在执行结束时放入。有人可以帮我这样做吗?
.load()
来电:
$("#content").load("/admin/ajax/analyse.php");
我有一个 div:
<div id="content"></div>
当页面加载时,我调用一个.load()
. 此加载大约需要 10 分钟才能完成,并且在执行期间,其 PHP 文件会返回一些有关执行状态的信息,例如 Linux 加载。我想#content
动态地将这些信息放入 div 中,但.load()
仅在执行结束时放入。有人可以帮我这样做吗?
.load()
来电:
$("#content").load("/admin/ajax/analyse.php");
jQuery 的 ajax 接口不提供获取响应进度更新的方法(即使它声称是浏览器原生XMLHttpRequest
对象的超集)。显然,这样的用例对于 jQuery 开发人员来说是不可想象的:
然而,没有提供任何
onreadystatechange
机制,因为、success
和涵盖了所有可能的要求。error
complete
statusCode
通过直接使用 an ,您可以在事件处理程序XMLHttpRequest
中读取响应的当前进度:onreadystatechange
var xhr = new XMLHttpRequest();
xhr.open("GET", "/admin/ajax/analyse.php", true);
xhr.onreadystatechange = function receiveUpdate(e) {
$("#content").html(this.responseText);
}
xhr.send();
这适用于大多数浏览器的最新版本,包括 IE 10、Chrome 和 Firefox。
演示:
这只是一个你必须淘汰的想法......
在服务器上,
在服务器上也:
在客户端,
那应该对你有用。
有几种方法可以解决这个问题,但所有这些都需要服务器端的更改。一种解决方案(我认为最适合您想象它的工作方式)是long polling。
请参阅有关使用 PHP 和 jQuery 进行长轮询的问题。