0

我的问题: 我的网站内部有这个 AJAX 调用,它将一些内容加载到给定的 DIV 中。在加载此内容时,会插入一个 GIF 加载动画(通过 JavaScript),直到 AJAX 返回请求的内容。

Wich 在 Firefox 中运行良好,因为 FF 以线性顺序加载 JavaScript。另一方面,Chrome 和 IE 似乎不玩那个游戏。似乎他们首先触发所有 AJAX,然后处理其他所有内容。

很高兴知道: 我的 AJAX 调用的异步是 FALSE。是的,我知道,我应该以使用 TRUE 异步为目标,但在这种情况下,它必须是这样。

我的目标: 因为我知道在加载 AJAX 时我不能做任何事情,所以我想在调用任何 AJAX 之前执行插入动画的代码行。我尝试了 setTimeout() 但这只是破坏了整个脚本。

有什么建议么?

这是代码:

<div id="mycolumn">
    <!-- Here: Loading Animation first, then AJAX responseText -->
</div>

JavaScript 函数:

function myAjaxCall () {

    // Initiate HTTP Request
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
     } else {
        // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
     }

    // I want this to happen BEFORE any AJAX gets executed    
    document.getElementById("mycolumn").innerHTML="<img src='loading.gif'>"; 

    // AJAX Request, gets fired by Chrome and IE before anything else, 
    // wich prevents my img from being inserted before the response arrives
    xmlhttp.open("GET","someURL",false);
    xmlhttp.send(null);

    // AJAX Response, replaces my Loading Animation
    document.getElementById("mycolumn").innerHTML=xmlhttp.responseText;
}
4

0 回答 0