代码之家  ›  专栏  ›  技术社区  ›  Joel Martinez

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

  •  4
  • Joel Martinez  · 技术社区  · 16 年前

    我有兴趣提供一个通用的“我正在进行Ajax调用”通知…类似于Google的大多数服务在忙着打电话时都会有一个红色的加载通知。如果有活动呼叫,是否有一种全局性的方法来利用某些事件来显示/隐藏该通知?

    我们不使用jquery-ajax API,我们使用的是mvc-ajax工具…例如Ajax.BeginInform或Ajax.ActionLink。

    2 回复  |  直到 15 年前
        1
  •  9
  •   montrealist    15 年前

    我不知道上一个答案为什么被接受,但是你可以使用 加载元素ID 您的 Ajax选项 ,方法是在页面中指定元素的ID, 显示 CSS属性设置为 没有人 .

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

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

        2
  •  7
  •   Darin Dimitrov    15 年前

    如果使用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();
        }
    });
    

    这个 在前面 处理程序可用于显示包含加载文本或图像的隐藏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();
        }
    });