2009-06-08 25 views
0

我在页面中有很多Ajax指示符。现在我用在页面中只显示一个Ajax指示符,其中大部分为

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

这个问题是,我得到的所有指标显示任何方式只显示一个?

我用asp.net mvc的

UPDATE:问题是如何在$(文件).ajaxStart(函数(){知道什么指标显示

+0

这没有意义。看看代码,你似乎只是操纵一个Ajax指标 - 基于一些独特的ID。当然,除非页面上有多个具有相同ID的元素,这在技术上是不正确的。 – montrealist 2009-06-08 18:24:48

+0

问题是如何在$(document).ajaxStart(function(){知道什么指标来显示 – 2009-06-08 18:41:32

回答

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

0

,将在多个运行的唯一途径项目是如果你有多个项目具有相同的ID

是否有可能你的“<%= partido.PartidoId.ToString()%>”没有被转化为正确的ID,而是被字面解释?

如果你可以pos要么是一个链接,要么是一些代码,以帮助我们知道发生了什么,这将是有益的。

+0

问题是如何在$(document).ajaxStart(function(){知道什么指标来显示 – 2009-06-08 18:41:16

+0

让我只是请阅读我认为您的代码将执行的操作: 当任何ajax调用开始时,ID为“ajaxBusyIndi​​cator _ <%= partido.PartidoId.ToString()%>”的元素将变为display:inline; 当ajax如果“ajaxBusyIndi​​cator _ <%= partido.PartidoId.ToString()%>”将会变为display:none;(hidden)。 您是否尝试过使用相同的ID以另一种方式选择这些div ?你有没有尝试用一个文字值来选择它,而不是一个变量? 同样,如果你有一个示例页面或一些代码来显示。 – Lathan 2009-06-08 18:47:45

1

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

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

相关问题