Javascript 在Chrome/IE中在AJAX之前启动其他Java脚本

Javascript 在Chrome/IE中在AJAX之前启动其他Java脚本,javascript,ajax,internet-explorer,google-chrome,firefox,Javascript,Ajax,Internet Explorer,Google Chrome,Firefox,我的问题: 我的网站中有一个AJAX调用,它将一些内容加载到给定的DIV中。加载此内容时,会插入一个GIF加载动画(通过JavaScript),直到AJAX返回请求的内容 Wich在Firefox中工作得非常好,因为FF以线性顺序加载JavaScript。另一方面,Chrome和IE似乎并不玩这个游戏。看起来他们首先启动了所有AJAX,然后处理其他所有事情 很高兴知道: 我的AJAX调用上的async为FALSE。是的,我知道,我的目标应该是使用真正的异步,但在这种情况下,它必须是那样的 我的目

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

Wich在Firefox中工作得非常好,因为FF以线性顺序加载JavaScript。另一方面,Chrome和IE似乎并不玩这个游戏。看起来他们首先启动了所有AJAX,然后处理其他所有事情

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

我的目标: 因为我知道在加载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;
}
函数myAjaxCall(){
//启动HTTP请求
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}否则{
//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
//我希望在任何AJAX执行之前发生这种情况
document.getElementById(“mycolumn”).innerHTML=“”;
//AJAX请求,先被Chrome和IE解雇,
//它防止在响应到达之前插入我的img
open(“GET”,“someURL”,false);
xmlhttp.send(空);
//AJAX响应,替换我的加载动画
document.getElementById(“mycolumn”).innerHTML=xmlhttp.responseText;
}

是什么让你说IE和Chrome没有按顺序执行这些语句?你能添加一个jsbin或什么吗?您的AJAX方法并不是特别错误——因此我们需要了解更多的逻辑以获得解决方案。如果您预加载加载程序映像会怎么样?可能只是因为一些延迟(可能ajax调用在加载映像完全加载之前就结束了),这是一种竞争条件,使用异步调用,同步不好并锁定了浏览器。@Justiniessner好吧,也许我这里出了点问题。这里有一把小提琴,它说明了我的问题(sry,我一开始没有提供):-看来responseText注射是我的问题。如果你评论第19行,你可以看到我想要的。