ASP.NET MVC Ajax调用中的全局“加载”通知

4

我希望提供一个通用的“正在进行ajax调用”的通知...类似于大多数谷歌服务在忙于进行调用时会有一个小红色加载通知。是否有一种全局捕获某些事件的方法,我可以使用它来显示/隐藏该通知,如果有活动调用?

我们没有使用jQuery ajax api,而是使用MVC Ajax的东西...例如Ajax.BeginForm或Ajax.ActionLink。

2个回答

9

我不确定为什么之前的答案被接受了,但是你可以在你的AjaxOptions中使用LoadingElementId参数,通过指定页面上一个元素的ID,该元素的display CSS属性设置为none

new AjaxOptions { UpdateTargetId = "somebox", LoadingElementId = "status-waiting" }

MVC会为您完成其余的工作:当请求开始时,DIV将被显示,一旦完成 - 再次隐藏。您所需要做的就是样式化该框(定位它,提供“加载”图像等)。


这个答案被接受是因为你还没有写出它;-) 谢谢! - Joel Martinez

7
如果您正在使用JQuery进行AJAX调用,可以使用以下代码之一:

make AJAX

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();
    }
});

我们只在一个实例中使用jQuery ajax...其他所有功能都使用MVC ajax库。例如Ajax.BeginForm( ... - Joel Martinez
我对AJAX不是很了解,但是"XMLHttpReques"应该在末尾加上一个"t",不是吗?你似乎在指定的两个"beforeSend"属性中都没有加上这个"t"。 - Wayne Koorts
当问题说“我们没有使用jQuery ajax api”时,为什么这个答案被接受了? - bzlm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接