jQuery 插件在等待 AJAX 响应时显示 "loading"

标签 jquery jquery-plugins

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

但我想知道 jQuery 是否提供了一个插件,可以使页面变暗...显示“正在加载”或旋转器,直到请求从服务器返回?我记得在附近看到过一个,但找不到它。

最佳答案

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

ajaxStart (Global Event)
This event is broadcast if an Ajax request is started and no other Ajax requests are currently running.

ajaxStop (Global Event)
This global event is triggered if there are no more Ajax requests being processed.

考虑到这一点,设置您想要的内容就相当容易了:

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

只要让你的 #loading div 随心所欲 - 看看众多的灯箱插件或 BlockUI实现您所要求的目标。

当然,您可以将其设置为执行您喜欢的任何操作,但是一旦在脚本顶部设置完毕,就可以一劳永逸了。

如果您使用的是 BlockUI 插件,那么您所要做的就是:

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

关于jQuery 插件在等待 AJAX 响应时显示 "loading",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1408728/

相关文章:

jquery - 动态添加的元素不换行

javascript - 带有 AJAX 文件的 Laravel 路由

jquery-plugins - jQuery tokenInput 插件(和焦点)

javascript - 类似 treeview 的 jquery 插件

jquery - 同位素定位后找到目标位置

jquery - 忽略特定列表排序器的排序

jquery - Bootstrap carousel 一次传送多个帧

javascript - Dropzone 文件上传 Rails - 入门

javascript - jquery如何在数组中调用过滤函数

javascript - JQuery 创建一个滚动跟随 div