我正在向执行一些昂贵操作的页面发出ajax请求(重新索引某些数据库表)。 这需要时间,我想显示进度消息,直到它完成。
我该怎么做?这可能吗?因为javascript一直等到页面加载完毕,然后显示所有消息......
答案 0 :(得分:2)
每个请求返回一条消息。继续发出AJAX请求,直到收到特定的“完成”响应。这就是push或“COMET”在幕后工作的方式,你也可以使用合适的推技术。
这里隐藏/隐含的一点是你不应该对页面脚本进行昂贵的操作。
答案 1 :(得分:0)
一个简单的解决方案是继续轮询你在数据库中用作标志的变量,这样当你的昂贵操作完成时,它会设置你正在轮询的标志。希望它有所帮助。
答案 2 :(得分:0)
我会在主内容div中嵌入一个加载div。将background-image设置为AJAX加载器(可以下载here)。当您单击指定的任何按钮时,将显示加载div,并且您的主要内容将具有额外的CSS选择器名称。你可以使不透明度为0.5或任何你想要的.main-content.loading。这是jQuery:
$(".button").click(function(){
$(".main-content").addClass(".loading");
$(".main-content .loader").show();
$.ajax({
data: //whatever data,
type: "POST",
url: // whatever url,
success: function(d){
$(".main-content").removeClass(".loading");
$(".main-content .loader").hide();
$(".enter-content").html(d);
}
});
});
答案 3 :(得分:0)
jquery ui有一个非常好的进度条,其中包含如何使用它的示例:http://jqueryui.com/demos/progressbar/