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