在IE或Chrome中无法显示为AJAX调用加载div,在Firefox中正常工作

时间:2011-07-27 17:46:17

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

我正在尝试编写一个非常简单的函数,它显示一个显示“正在加载...”的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;
}

感谢您的快速回复!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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