jQuery插件在等待AJAX​​响应时显示“加载”

时间:2009-09-11 02:43:04

标签: jquery jquery-plugins

我写了一些jQuery ajax代码,当我更改下拉选项时,我向服务器发送请求。根据此更改,4或5个文本字段更改其数据并加载一堆新图像。一切都很漂亮。

但是我想知道是否有一个jQuery提供的插件会使页面变暗...显示'loading'或spinner快速一秒,直到请求从服务器返回?我记得见过一个但却无法找到它。

2 个答案:

答案 0 :(得分:11)

您可以将两个对象传递给名为ajaxStartajaxStop的通用ajax对象。这些是事件处理程序,只要发送和接收ajax查询就会触发。

  

ajaxStart (全球事件)
  如果启动了Ajax请求并且当前没有其他Ajax请求正在运行,则会广播此事件。

     

ajaxStop (全球事件)
  如果不再处理Ajax请求,则会触发此全局事件。

考虑到这一点,设置你所追求的东西相当容易:

$("#loading").bind("ajaxStart", function(){
    $(this).show();
}).bind("ajaxStop", function(){
    $(this).hide();
});

只需按照自己喜欢的方式制作#loading div - 看看众多灯箱插件或BlockUI即可获得类似于你所要求的内容。

当然,您可以将其设置为执行任何您喜欢的操作,但是一旦将其设置在脚本的顶部,就会发生故障。

如果您使用的是BlockUI插件,那么您只需要这样做:

$().ajaxStart($.blockUI).ajaxStop($.unblockUI);

答案 1 :(得分:0)

我建议使用jQuery Ajax事件方法ajaxStart()和ajaxComplete()

Documentation here under Ajax Events