我写了一些jQuery ajax代码,当我更改下拉选项时,我向服务器发送请求。根据此更改,4或5个文本字段更改其数据并加载一堆新图像。一切都很漂亮。
但是我想知道是否有一个jQuery提供的插件会使页面变暗...显示'loading'或spinner快速一秒,直到请求从服务器返回?我记得见过一个但却无法找到它。
答案 0 :(得分:11)
您可以将两个对象传递给名为ajaxStart
和ajaxStop
的通用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()