我想在ajax请求期间向用户显示一些视觉进度。例如,当他点击向服务器端脚本发出AJAX请求的“进程”按钮时,他会看到一个“正在加载...”的消息和图形,但我还想向他展示一些进程是多少处理是完成。 E.g 5/10 processed, 6/10 processed...
等等。
有没有这样做?
答案 0 :(得分:2)
我不知道你的服务器端进程究竟是什么,但将它分解为一系列Ajax调用是否有任何意义,每个调用都是进程的一部分?然后你可以在每一步增加你的显示。
答案 1 :(得分:2)
这是一些示例代码。它可能有问题,我正在从一个更大的应用程序中剪掉它。
HTML:
<button id="doStuff">
<div id="status"></div>
<div id="iframeHolder"></div>
的javascript:
//This one will be called from the HTML the javascript is streaming back
function updateStatus(message) {
$('#status').html(message);
}
$('#doStuff').click(function(event) {
event.preventDefault();
var url="your.page.html";
$('#iframeHolder').html('<iframe src="' + url + '"></iframe>');
}
服务器端(这是vb asp.net,但你应该能够用你选择的语言来做):
dim message as string = "hello world"
dim script = String.Format("<script type='text/javascript'>parent.updateStatus('{0}');</script>",message)
Response.Write(script)
Response.Flush()
一些观察
$('#iframeHolder iframe').attr('src','about:blank')
)希望有所帮助。几个月前我就把它弄丢了: - )
答案 2 :(得分:1)
jQuery + PHP示例进度条实现,轮询服务器端脚本,剩余百分比。 click here
答案 3 :(得分:1)
在Safari 4和Firefox 3.5中,您可以按如下方式确定XMLHttpRequest
的进度:
var url = "[URL to file]";
var request = new XMLHttpRequest();
request.onprogress = function(e) {
if (e.lengthComputable) {
var percentComplete = (e.loaded / e.total) * 100;
console.log("Progress: " + percentComplete + "%");
}
else {
// Code to execute when we can't get the progress
}
};
request.open("GET", url, true);
request.send("");
有关更多信息,请参阅Mozilla开发人员网络上的this page