Internet Explorer错误消息“操作已超时”

时间:2011-12-12 15:50:22

标签: javascript ajax internet-explorer timeout

我有一段代码可以在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。

2 个答案:

答案 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个查询。如果它超过它超时。