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

时间:2009-01-09 17:51:17

标签: asp.net-mvc ajax

我有兴趣提供一般“我正在制作ajax电话”通知......类似于大多数Google服务在忙于拨打电话时都会收到一些红色加载通知。有没有办法全局点击某些事件,如果有正在进行的通话,我可以用它来显示/隐藏该通知?

我们没有使用jQuery ajax apis,我们正在使用MVC Ajax的东西......比如Ajax.BeginForm或Ajax.ActionLink。

2 个答案:

答案 0 :(得分:9)

我不确定为什么之前的答案被接受,但您可以在 AjaxOptions 中使用 LoadingElementId 参数,方法是指定您的元素的ID将 display CSS属性设置为 none 的页面。

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

MVC将为您完成剩下的工作:当请求启动时,DIV将显示,一旦完成 - 再次隐藏。你所要做的就是设置框的样式(定位它,提供'加载'图像等)。

答案 1 :(得分:7)

如果您使用JQuery进行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,而完成处理程序将用于隐藏它(无论调用是否成功)或不)。

或者,如果您想为所有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();
    }
});