IE9-ajax请求期间未显示微调器[已解决-不要使用Msxml2.XMLHTTP.4.0]
我的代码如下:IE9-ajax请求期间未显示微调器[已解决-不要使用Msxml2.XMLHTTP.4.0],ajax,internet-explorer-9,Ajax,Internet Explorer 9,我的代码如下: function loadContent() { if(loading) { return false; } showSpinner(); var xhr = createXHR(); xhr.open("GET", "http://localhost/testing.php"); xhr.onreadystatechange = function() { if(xhr.readyState == 4) {
function loadContent() {
if(loading) { return false; }
showSpinner();
var xhr = createXHR();
xhr.open("GET", "http://localhost/testing.php");
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
hideSpinner();
var resp = xhr.responseText;
document.getElementById("content").innerHTML = resp;
}
}
xhr.send(null);
}
function showSpinner() {
document.getElementById("loadingIcon").style.display = 'inline';
loading = true;
}
function hideSpinner() {
document.getElementById("loadingIcon").style.display = 'none';
loading = false;
}
这在Firefox和Chrome中可以正常工作,但在IE9中不会显示微调器
我注释掉了hideSpinner()函数的第一行,发现IE9确实显示微调器,但只有在AJAX请求返回结果之后才显示。
我在这里做了什么不正常的事吗
[edit]算出了——createXHR()方法的原始代码如下:
function createXHR() {
try { return new ActiveXObject("Msxml2.XMLHTTP.5.0"); } catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.4.0"); } catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
try { return new XMLHttpRequest(); } catch(e) {}
return null;
}
将最后一行“try”移到顶部可以解决问题。不要依赖全局变量来完成此操作。您根本不需要
加载变量
function loadContent() {
var spinner = document.getElementById("loadingIcon");
var xhr = createXHR();
spinner.style.display = 'inline';
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
document.getElementById("content").innerHTML = xhr.responseText;
}
spinner.style.display = 'none';
}
}
xhr.open("GET", "http://localhost/testing.php");
xhr.send(null);
}
隐马尔可夫模型。。。加载
变量的目的是防止触发多个请求,有更好的方法吗?另外,我按照您的建议更改了代码,但仍观察到IE9中的相同行为,如顶部所述post@joshivir:啊,我知道变量的用法了。IE中是否有任何错误消息?另外,您是否尝试过使用“块”
而不是“内联”
?换句话说,如果单独发出“style”命令,微调器是否会显示?在IE控制台中未发现任何脚本错误。使用“block”
会导致微调器显示在错误的位置:-)不确定最后一个问题是什么意思…我明白了--似乎我使用了一种不推荐的方法来创建AJAX请求,编辑带有详细信息的top post。非常感谢您抽出时间:-)