【问题标题】:Loading div for AJAX call doesn't display in IE or Chrome, works fine in Firefox为 AJAX 调用加载 div 不显示在 IE 或 Chrome 中,在 Firefox 中工作正常
【发布时间】:2011-10-14 11:56:45
【问题描述】:

我正在尝试编写一个非常简单的函数,它显示一个显示“正在加载...”的 div,然后进行 jQuery ajax() 调用,一旦完成,隐藏加载 div。该代码在 Firefox 中完美运行,但 IE 7(可能也是 8/9,仅在 7 上测试过)和 Chrome 都有问题:

function ajaxwl(url) {
    $('#loadingDiv').show();
    var xmlHttp=$.ajax({type: "GET",
        url: url,
        async: false });
    $('#loadingDiv').hide();
    return xmlHttp;
}

我使用 Chrome 调试器逐步完成了代码,然后它工作了 - 加载 div 按预期显示。但是,如果我在没有调试器的情况下运行代码,Chrome(和 IE 7)会加载 AJAX 请求而不会显示加载 div。也许这与 Chrome 锁定浏览器这一事实有关,因为我使用的是非异步请求?

编辑:我最终将请求转换为异步请求(需要在我继承的这段代码中的任何地方进行转换,但我一直在拖延......)现在一切都按预期工作:

function ajaxwl(url) {
    $('#loadingDiv').show();
    var xmlHttp=$.ajax({type: "GET",
        url: url
    }).done(function() {
        $('#loadingDiv').hide();
    });
    return xmlHttp;
}

感谢您的快速回复!

【问题讨论】:

  • 您可能应该使用异步请求,我不确定这是否会导致问题,但在执行网络任务时停止 JS 执行是不好的做法。
  • 你是对的。你让我准备好将我所有的请求都转换为异步的。谢谢。

标签: javascript jquery ajax internet-explorer google-chrome


【解决方案1】:

加载 div 在 IE 中不可见,因为您在同步模式下使用 AJAX,因此 js 执行会挂起浏览器,您将看不到它何时可见以及何时隐藏。在所有其他浏览器中,js 的执行速度非常快,因此您可以看到它。

【讨论】:

  • 当ajax调用响应到来时,你应该基本上隐藏加载div。
【解决方案2】:

我不久前在 IE 中遇到了同样的问题。检查问题后发现,ajax 请求返回的 html 格式不正确(缺少结束标记等),并且 IE 在这种情况下非常无情。也许你在这里也有同样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-13
    • 2023-03-24
    • 2015-05-03
    • 2023-03-05
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    相关资源
    最近更新 更多