我希望提供一个通用的“正在进行ajax调用”的通知...类似于大多数谷歌服务在忙于进行调用时会有一个小红色加载通知。是否有一种全局捕获某些事件的方法,我可以使用它来显示/隐藏该通知,如果有活动调用?
我们没有使用jQuery ajax api,而是使用MVC Ajax的东西...例如Ajax.BeginForm或Ajax.ActionLink。
我希望提供一个通用的“正在进行ajax调用”的通知...类似于大多数谷歌服务在忙于进行调用时会有一个小红色加载通知。是否有一种全局捕获某些事件的方法,我可以使用它来显示/隐藏该通知,如果有活动调用?
我们没有使用jQuery ajax api,而是使用MVC Ajax的东西...例如Ajax.BeginForm或Ajax.ActionLink。
我不确定为什么之前的答案被接受了,但是你可以在你的AjaxOptions中使用LoadingElementId参数,通过指定页面上一个元素的ID,该元素的display CSS属性设置为none。
new AjaxOptions { UpdateTargetId = "somebox", LoadingElementId = "status-waiting" }
MVC会为您完成其余的工作:当请求开始时,DIV将被显示,一旦完成 - 再次隐藏。您所需要做的就是样式化该框(定位它,提供“加载”图像等)。
jQuery.ajax({
url: 'url_to_send_ajax_request_to',
beforeSend: function(XMLHttpRequest) {
jQuery('#id_of_some_div_that_contains_loading_text').show();
},
complete: function(XMLHttpRequest, textStatus) {
jQuery('#id_of_some_div_that_contains_loading_text').hide();
}
});
beforeSend处理程序可用于显示一个隐藏的div,其中包含您的加载文本或图像,而complete处理程序将用于隐藏它(无论调用是否成功)。
或者,如果您想为所有AJAX请求全局设置它,可以使用ajaxSetup函数:
jQuery.ajaxSetup({
beforeSend: function(XMLHttpRequest) {
jQuery('#id_of_some_div_that_contains_loading_text').show();
},
complete: function(XMLHttpRequest, textStatus) {
jQuery('#id_of_some_div_that_contains_loading_text').hide();
}
});