【问题标题】:Show only one Ajax Indicator in a Page with a lot of them在一个页面中只显示一个 Ajax 指示器,其中有很多
【发布时间】:2009-06-08 18:16:17
【问题描述】:

我在一个页面中有很多 Ajax 指示器。现在我用

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

问题是我让所有的指标都显示出来 有什么办法只显示一个吗?

我使用 asp.net MVC

更新:问题是如何在 $(document).ajaxStart(function() { 知道要显示什么指标

【问题讨论】:

  • 这没有意义。查看代码,您似乎只是在操作一个 ajax 指示器 - 基于某个唯一 ID。当然,除非页面上有多个具有相同 ID 的元素,这在技术上是不正确的。
  • 问题是如何在 $(document).ajaxStart(function() { 知道要显示什么指标

标签: asp.net-mvc ajax jquery


【解决方案1】:

由于您使用的是 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、complete、success 和 error 选项。看看examples。

【讨论】:

  • 用 Jquery 有什么办法吗?
  • 编辑回答问题。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    您的“”是否有可能没有被转换为正确的 id,而是被逐字解释?

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

    【讨论】:

    • 问题是如何在 $(document).ajaxStart(function() { 知道要显示什么指标
    • 让我读一下我认为您的代码会做什么:当任何 ajax 调用开始时,id 为“ajaxBusyIndi​​cator_”的元素将变为显示:内联;。当ajax调用停止时,id为“ajaxBusyIndi​​cator_”的元素将变为display: none; (隐)。您是否尝试过使用相同的 id 以另一种方式选择这些 div?您是否尝试过使用一个文字值而不是变量来选择它?同样,如果您有示例页面或要显示的代码。
    猜你喜欢
    • 2012-06-25
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    相关资源
    最近更新 更多