Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Internet Explorer错误消息“;“操作超时”;_Javascript_Ajax_Internet Explorer_Timeout - Fatal编程技术网

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

Javascript Internet Explorer错误消息“;“操作超时”;,javascript,ajax,internet-explorer,timeout,Javascript,Ajax,Internet Explorer,Timeout,我有一段代码可以在chrome和firefox中使用,但不能在internet explorer中使用。我不知道真正的原因是什么。我从internet explorer中收到一条操作超时消息“消息:操作超时。” 这是我正在使用的ajax函数,它来自w3schools,所以我知道这是正确的 function ajax() { var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chr

我有一段代码可以在chrome和firefox中使用,但不能在internet explorer中使用。我不知道真正的原因是什么。我从internet explorer中收到一条操作超时消息“消息:操作超时。”

这是我正在使用的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);“
”中

函数编辑(){
var ajaxRequest=ajax();
var postdata=“data=”+document.getElementById(“id1”).value+“”+document.getElementById(“id2”).value+“”+document.getElementById(“id3”).value;
ajaxRequest.onreadystatechange=函数(){
var ajaxDisplay=document.getElementById('ajaxDiv');
if(ajaxRequest.readyState==4&&ajaxRequest.status==200){
ajaxDisplay.innerHTML=ajaxRequest.responseText;
}
}   
警报(postdata);
打开(“POST”,“confirmPage.php”,false);
setRequestHeader('Content-Type','application/x-www-form-urlencoded');
ajaxRequest.send(postdata);
警报(“完成”);
}

在internet explorer中,所有其他页面都使用相同的代码,但不使用此特定页面。我似乎不明白为什么。此页面可在chrome和firefox中使用,但不能在internet explorer中使用。它永远不会进入“完成”状态。我正在使用IE 8。

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

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。

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

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

部分答案:

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

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

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

部分答案:

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

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


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

是的,我知道我需要一个同步请求。如果我将其更改为
“true”
,它将发出警报
“已完成”
,但不会转到
页面(confirmPage.php)
。显然,它没有提供错误,因为它没有等待响应。Ajax请求的状态是否等于
200
?我不确定。我试图打印200、301、302、304、307、400、401、403、404、410、500和501的警报语句。这两个都不是。我还遗漏了什么吗?是的,我知道我需要一个同步请求。如果我将其更改为
“true”
,它将发出警报
“已完成”
,但不会转到
页面(confirmPage.php)
。显然,它没有提供错误,因为它没有等待响应。Ajax请求的状态是否等于
200
?我不确定。我试图打印200、301、302、304、307、400、401、403、404、410、500和501的警报语句。这两个都不是。我还缺什么吗?