我的问题: 我在我的网站内部有这个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;
}