我有一段代码可以在chrome和firefox中运行,但在Internet Explorer中却没有。我无法弄清楚究竟是什么原因。我从Internet Explorer "Message: The operation was timed out."
这是我正在使用的ajax功能,它来自w3schools所以我知道这是正确的。
function ajax() {
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
alert(xmlhttp);
return xmlhttp;
}
这是陷入困境的代码。错误消息位于"ajaxRequest.send(postdata);"
。
function edit(){
var ajaxRequest = ajax();
var postdata = "data=" + document.getElementById("id1").value + "<|>" + document.getElementById("id2").value + "<|>" + document.getElementById("id3").value;
ajaxRequest.onreadystatechange = function(){
var ajaxDisplay = document.getElementById('ajaxDiv');
if(ajaxRequest.readyState == 4 && ajaxRequest.status==200){
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
alert(postdata);
ajaxRequest.open("POST","confirmPage.php",false);
ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
ajaxRequest.send(postdata);
alert("Finished");
}
所有其他页面在Internet Explorer中使用相同的代码,但不使用此特定页面。我似乎无法弄明白为什么。此页面适用于chrome和firefox,但不适用于Internet Explorer。它从未进入“完成”。我正在使用IE 8。
答案 0 :(得分:0)
当您需要同步行为时,请尝试以下操作:
ajaxRequest.open("POST", "confirmPage.php", false);
ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
ajaxRequest.send(postdata);
if (ajaxRequest.status === 200) {
document.getElementById('ajaxDiv').innerHTML = ajaxRequest.responseText;
}
alert("Finished");
由于请求是同步的,因此您不需要onreadystatechange
。
答案 1 :(得分:0)
部分答案:
我弄明白了这个问题。这不是javascript和/或ajax。 IE无法处理查询中的大量结果,因此超时。这是一个非常模糊的错误,因为我认为它与ajax函数而不是php文件有关。
结果集并不大。有5个不同的查询。每个记录约有5-50K(我不打印所有记录,只是查询)。它在大结果集后超时。
要测试我创建了一个包含简单SELECT *
个查询的测试页面,它只能处理2-3个查询。如果它超过它超时。