多个AJAX响应

时间:2011-07-30 23:43:22

标签: php ajax jquery

我正在向执行一些昂贵操作的页面发出ajax请求(重新索引某些数据库表)。 这需要时间,我想显示进度消息,直到它完成。

我该怎么做?这可能吗?因为javascript一直等到页面加载完毕,然后显示所有消息......

4 个答案:

答案 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/