Javascript ajax在IE 8中速度非常慢,但在firefox和chrome中速度非常快

Javascript ajax在IE 8中速度非常慢,但在firefox和chrome中速度非常快,javascript,ajax,Javascript,Ajax,有很多类似的职位,但没有什么完全适合我的需要。所以我被迫创建一个帖子 名称列表显示在jsp页面上。当您将鼠标悬停在某个名称上时,我会执行一个ajax调用,以在工具提示弹出窗口中显示该名称的详细信息 用户将使用IE8。在IE8中完成这项简单的工作大约需要5秒钟,就像在Firefox和chrome中一样,它会立即发生 我还注意到,随着显示的名称数量的增加或减少,IE8中的响应时间也会增加或减少 如何在IE8中加快速度 jsp页面 <td onmouseover ="showDetails('$

有很多类似的职位,但没有什么完全适合我的需要。所以我被迫创建一个帖子

名称列表显示在jsp页面上。当您将鼠标悬停在某个名称上时,我会执行一个ajax调用,以在工具提示弹出窗口中显示该名称的详细信息

用户将使用IE8。在IE8中完成这项简单的工作大约需要5秒钟,就像在Firefox和chrome中一样,它会立即发生

我还注意到,随着显示的名称数量的增加或减少,IE8中的响应时间也会增加或减少

如何在IE8中加快速度

jsp页面

<td onmouseover ="showDetails('${origin }')">
    <a href="#"><c:out value="${origin}"></c:out><span id="info"></span></a> 
</td>
试试这个

function showDetails(stop){
    var t1 = new Date().getTime();
    var xmlHttpRequest; 
    if(window.XMLHttpRequest){
        xmlHttpRequest = new XMLHttpRequest();
    }else{
        xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttpRequest.onreadystatechange=function(){
        if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){
            alert("Call took " + (new Date().getTime() - t1) + " milliseconds");
            document.getElementById("info").innerHTML = xmlHttpRequest.responseText;
        }
    }
    xmlHttpRequest.open("GET", "showStopsInfoPopup.do?stop="+stop, true);
    xmlHttpRequest.send();
}
您可能会看到调用速度同样快,但在IE8中,响应的后续呈现速度较慢


如果您确认了这一点,那么问题是关于responseText中的内容。

如果您想使用jquery:

function showDetails(stop) {
  $('#info').load("showStopsInfoPopup.do?stop=" + stop);
}
相反:

xmlHttpRequest.onreadystatechange=function(){
    if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){
        alert("Call took " + new Date().getTime() - t1 + " milliseconds");
        document.getElementById("info").innerHTML = xmlHttpRequest.responseText;
    }
}
xmlHttpRequest.open("GET", "showStopsInfoPopup.do?stop="+stop, true);
xmlHttpRequest.send();
试试这个:

xmlHttpRequest.open("GET", "showStopsInfoPopup.do?stop="+stop, true);
xmlHttpRequest.onreadystatechange=function(){
    if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){
        alert("Call took " + new Date().getTime() - t1 + " milliseconds");
        document.getElementById("info").innerHTML = xmlHttpRequest.responseText;
    }
}
xmlHttpRequest.send(null);
确定新日期

代码中缺少括号(请记住分隔
字符串的
数学
)。尝试:


测试 Ajax请求:

<div id="info"></div>
<script>var xhr, t1;
if(window.ActiveXObject){
    try { xhr=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){
        try { xhr=new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){}
    }
} else if(window.XMLHttpRequest){
    xhr=new XMLHttpRequest();
}

xhr.open("GET", "teste.php", true);

t1 = new Date().getTime();//I start the timer that point to prevent the previous functions affect the end result

xhr.onreadystatechange=function(){
    if(xhr.readyState == 4 && xhr.status == 200){
        document.getElementById("info").innerHTML = "Call took " + (new Date().getTime() - t1) + " milliseconds";
    }
}
xhr.send(null);
</script>

var-xhr,t1;
if(window.ActiveXObject){
尝试{xhr=newActiveXObject(“Msxml2.XMLHTTP”);}catch(e){
请尝试{xhr=newActiveXObject(“Microsoft.XMLHTTP”);}catch(e){}
}
}else if(window.XMLHttpRequest){
xhr=newXMLHttpRequest();
}
open(“GET”,“teste.php”,true);
t1=新日期().getTime()//我启动计时器,以防止前面的功能影响最终结果
xhr.onreadystatechange=函数(){
如果(xhr.readyState==4&&xhr.status==200){
document.getElementById(“info”).innerHTML=“调用时间”+(新日期().getTime()-t1)+“毫秒”;
}
}
xhr.send(空);
php(teste.php):

<?php
sleep(5);
echo 'ok';
?>

结果:

<?php
sleep(5);
echo 'ok';
?>
  • IE8:5004毫秒

  • Chorme:5005毫秒

  • Firefox:5014毫秒

  • IE7:5023毫秒

  • IE6:5053毫秒


在测试之后,我们得出结论,可能是服务器端的某些东西,更确切地说,在PHP中。

如果没有使用任何jQuery代码,为什么要使用jQuery标记?如果您使用的是jQuery,请使用该方法。我很抱歉。我对ajax比较陌生。所以我想知道jquery的人也会知道这个问题。当我在谷歌上搜索这个问题时,似乎很多有类似问题的人都在使用jquery。延迟实际上可能是由innerHTML造成的,而不是ajax请求。我建议你把它们分开计时。@Christophe你能告诉我一种分开计时的方法吗?我尝试了下面由用户“stacktrace”提供的答案,我相信这是为了给请求计时,我收到了一个带有“Nan毫秒”消息的警报框。使用您首选的浏览器开发工具,他们会告诉您很多关于时间线和网络活动的信息。我完成了上述操作,我得到了一个带有“Nan毫秒”消息的警报框响应文本中的字符串长度通常小于20个字符。请编辑时间计算部分,然后重试。这是我收到的消息“呼叫耗时5696毫秒”。试过几次,大部分时间在5000毫秒左右IE8和Chrome之间的时间有差异吗?我认为对于ajax类型的活动来说,5秒是相当慢的。我收到一个带有消息“Nan毫秒”的警报框,消息说“呼叫花费了5696毫秒”。通常大约是5000毫秒。在你使用我的代码之前,IE中返回了多少毫秒?它花费了相同的毫秒。这可能是服务器端的问题,而不是客户端的问题。我正在测试我的计算机速度,很快我会返回结果。尝试了这个。它确实缩短了总时间的2秒。但仍然需要3秒左右。
<?php
sleep(5);
echo 'ok';
?>