jquery - 在 AJAX 请求期间显示/隐藏不起作用

标签 jquery ajax hide show

我有一个使用 ajax 请求数据的函数。我想显示一个忙碌的微调器,但隐藏/显示不会改变元素的可见性。

function RequestDataFromServer(stuff, url) {
    var result;

    $.ajax({
        url: url,
        data: { stuff: Stuff},
        async: false,
        beforeSend: function () {
            $("#divOverlay").show();
            console.log("Starting...");
        },
        complete: function () {
            $("#divOverlay").hide();
            console.log("Complete!");
            result = true;
        },
        success: function (data) {
            AddDataToCache(data);
        },
        error: function (xhr, ajaxOptions, thrownError) {
            result = false;
        }
    });

    return result;
}

我知道显示/隐藏语法是正确的,因为当我将它附加到按钮时它会起作用。我也尝试过使用:

$(document).ajaxStart(function(){
    $("#divOverlay").show();
}) 

没有影响(但是,如果我在 Chrome 中单步执行此事件,它会显示和隐藏元素)。我还尝试在调用 RequestDataFromServer 函数的函数中显示/隐藏......仍然没有。我没主意了。

最佳答案

我对此进行了测试,.show().hide() 在我的 ajax 调用中工作得很好。我猜你有一些语法错误导致了这个。让我们做些家务吧。

首先,正如其他人所提到的,使您尝试显示的元素在 DOM 中可访问。这是 IMO 最常见的遗漏。我假设您有一个元素,例如:

<div id="divOverlay" style="display:none;">Something</div>

其次,变量区分大小写。确保变量 stuff 在作为 data: {stuff: stuff} 传递时是小写的。

第三,值得注意的是 completesuccesserror 之后被调用,因此你的 result = true 应该在 success 而不是 complete 中定义。

Ajax Process Flow

function RequestDataFromServer(stuff, url) {
  var result;

  $.ajax({
    url: url,
    data: {stuff: stuff},
    async: false,
    beforeSend: function () {
      $("#divOverlay").show();
      console.log("Starting...");
    },
    complete: function () {
      $("#divOverlay").hide();
      console.log("Complete!");
    },
    success: function (data) {
      AddDataToCache(data);
      result = true;
    },
    error: function () {
      result = false;
    }
  });

  return result;
}

关于jquery - 在 AJAX 请求期间显示/隐藏不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41636989/

相关文章:

jquery - 从除目标父元素之外的所有其他元素中删除Class

使用 spring webMVC 和 spring security 进行 ajax 登录

javascript - 悬停时淡出/淡入 Div

C# - 隐藏表单,只显示标签?

javascript - 以对象格式设置 css 时使用 $(this) 和数据 attr

javascript - 为 head.js 创建函数在不同的浏览器中会出现非常严重的错误

jquery - Google map 容器舍入不适用于 iPad、iPhone、Android

javascript - 从 &lt;input&gt; 值设置变量

javascript - Jquery 使用 ajax 在提交表单中使用 addclass

iphone - 如何在 iOS 7 中以编程方式隐藏状态栏?