【问题标题】:Internet Explorer error message "The operation was timed out"Internet Explorer 错误消息“操作超时”
【发布时间】:2012-01-18 14:27:33
【问题描述】:

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

【问题讨论】:

    标签: javascript ajax internet-explorer timeout


    【解决方案1】:

    如果您需要同步行为,请尝试以下操作:

    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,因为请求是同步的。

    【讨论】:

    • 是的,我知道我需要一个同步请求。如果我将其更改为'true',则它是警报的"Finished",但不会转到page(confirmPage.php)。显然它没有提供错误,因为它没有等待响应。
    • Ajax 请求的状态是否等于200?
    • 我不确定。我尝试打印 200、301、302、304、307、400、401、403、404、410、500 和 501 的警报声明。这两者都不是。我还有什么遗漏吗?
    【解决方案2】:

    部分答案:

    我发现了问题所在。它不是 javascript 和/或 ajax。 IE 无法处理查询中的大量结果,因此会超时。这是一个非常模糊的错误,因为我认为这与 ajax 函数而不是 php 文件有关。

    结果集并不大。有 5 种不同的查询。每个都有大约 5-50K 记录(我没有打印所有记录,只是查询)。在大型结果集后超时。

    为了测试,我用简单的SELECT * 查询创建了一个测试页面,它只能处理 2-3 个查询。如果超过了它就会超时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      相关资源
      最近更新 更多