我有一个div:
<div id="content"></div>
当页面加载时,我呼叫.load()
。这个加载大约需要10分钟才能完成,在执行期间,它的PHP文件会返回一些告诉执行状态的信息,比如Linux加载。我希望将此信息动态地放在div #content
中,但.load()
仅在执行结束时放置。有人可以帮我这么做吗?
.load()
来电:
$("#content").load("/admin/ajax/analyse.php");
答案 0 :(得分:3)
jQuery的ajax接口没有提供获取响应进度更新的方法(即使它声称是浏览器的本机XMLHttpRequest
对象的超集)。显然,such a use case is inconceivable to the jQuery developers:
不提供
onreadystatechange
机制,因为success
,error
,complete
和statusCode
涵盖了所有可能的要求。
通过直接使用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。
<强>演示:强>
答案 1 :(得分:0)
有几种方法可以解决这个问题,但所有这些方法都需要服务器端更改。一个解决方案(我认为最符合你想象的工作方式)是long polling。
答案 2 :(得分:0)
这只是一个你必须要冲出来的想法......
在服务器上,
在服务器上:
在客户端,
那应该适合你。