在Chrome / IE中的AJAX之前触发其他JavaScripts

时间:2013-10-22 15:17:09

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

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

在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;
}

0 个答案:

没有答案