87,910
社区成员
发帖
与我相关
我的任务
分享
// 显示loading。
$(document).ajaxStart(function(){
$("#loader").show();
});
// 隐藏loading。
$(document).ajaxComplete(function(){
$("#loader").fadeOut("fast");
});
$.ajax({
type: method,
url: url,
data : paramStr,
async : otherParams.async,
onSubmit: function(){
// onSubmit..
},
beforeSend : function(){
$("#loader").show();
},
complete : function(){
$("#loader").hide();
}
... ...
)}
$("div").ajaxStart(function(){
//每个DIV开始请求时,更新状态为加载中
$(this).html("<img src='/i/demo_wait.gif' />");
});
//每个Div通过Ajax与服务器交换数据
$("div").load("/example/jquery/demo_ajax_load.asp");
定义和用法
ajaxStop() 方法在 AJAX 请求结束时执行函数。它是一个 Ajax 事件。
详细说明
无论 Ajax 请求在何时完成 ,jQuery 都会检查是否存在其他 Ajax 请求。
如果不存在,则 jQuery 会触发该 ajaxStop 事件。
在此时,由 .ajaxStop() 方法注册的任何函数都会被执行。
好吧,问题解决了!全局AJAX处理函数,加上SlipHover,基本上完美解决了系统loading提示的用户体验。
$._ajax = $.ajax;
$.ajax = function(options) {
var index, id, loadingStr;
if(typeof window.ajaxQueue == 'undefined') {
window.ajaxQueue = [];
window.ajaxLoadings = {};
}
index = window.ajaxQueue.length;
id = Math.floor(Math.random() * 1000000);
loadingStr = options.loadingStr || 'loading...';
options.id = id;
window.ajaxQueue[index] = id;
window.ajaxLoadings[id] = loadingStr;
if(window.ajaxQueue.length == 1) {
$('#loader').show().html(loadingStr);
}
$._ajax(options);
}
$('#loader').ajaxComplete(function(event, request, options) {
var size, loading;
var id = options.id;
var index = window.ajaxQueue.indexOf(id);
window.ajaxQueue.splice(index, 1);
delete window.ajaxLoadings[id];
size = window.ajaxQueue.length;
if(size == 0) {
$('#loader').hide().html('');
} else {
id = window.ajaxQueue[0];
loading = window.ajaxLoadings[id];
if(loading) {
$('#loader').html(loading);
}
}
});
var s = $.ajax({
loadingStr: 'loading 1',
url: '/restaurant-menu.php?action=getCookiesFood',
success: function(data) {
}
});
var s = $.ajax({
loadingStr: 'loading 2',
url: '/restaurant-menu.php?action=getCookiesFood',
success: function(data) {
}
});