在页面中只显示一个具有大量Ajax指标的Ajax指标

时间:2009-06-08 18:16:17

标签: asp.net-mvc ajax jquery

我在页面中有很多Ajax指标。现在我用

        $(document).ajaxStart(function() {
        $('#ajaxBusyIndicator_<%=partido.PartidoId.ToString()%>').css({ display: "inline" });
    }).ajaxStop(function() {
        $('#ajaxBusyIndicator_<%=partido.PartidoId.ToString()%>').hide();
    });

这个问题是我得到了所有指示器以显示任何方式只显示一个?

我使用asp.net mvc

更新:问题是如何在$(文件).ajaxStart(function(){知道要显示的指标

3 个答案:

答案 0 :(得分:2)

由于您使用的是Asp.net MVC,因此您应该使用AjaxOptions对象来指定在请求启动/完成/成功/失败时将调用的函数。在这些功能中,您可以显示/隐藏指示器。

我们这样做(使用OnBegin / OnComplete启用/禁用“加载”指示符):

<%= Ajax.ActionLink(..., new AjaxOptions { ..., 
    UpdateTargetId = 'blabla', 
    OnBegin = "msg_activate", 
    OnComplete = "msg_hide", 
    OnSuccess = "funcOnSuccess", 
    OnFailure = "funcOnFailure" })
%>

然后在你的msg_activate / msg_hide里面你可以得到这样的东西:

function msg_activate(response) { 
    $('#ajaxBusyIndicator_<%=partido.PartidoId.ToString()%>').css({ display: "inline" });
}

function msg_hide() {
    $('#ajaxBusyIndicator_<%=partido.PartidoId.ToString()%>').hide();
}

编辑:您也可以使用jQuery,但前提是您正在进行ajax request with jQuery。在这种情况下,您可以使用 beforeSend 完成成功错误选项。只需查看examples

答案 1 :(得分:1)

我认为针对该页面上发出的每个ajax请求都会引发jquery ajaxStart事件。您的代码正在做的是将多个事件处理程序附加到同一事件,并且对于每个ajax请求,将调用所有处理程序。

我认为你必须自己处理这些事件,你不能使用ajaStart。

答案 2 :(得分:0)

对多个项目运行的唯一方法是,如果您有多个具有相同ID的项目。

你的“&lt;%= partido.PartidoId.ToString()%&gt;”是否有可能是不是变成了正确的id,而是按字面解释?

如果您可以发布链接或某些代码来帮助我们了解正在发生的事情,那将会很有帮助。