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