웹 서버에서 XML 파일을 요청하는 작은 웹 페이지가 있습니다. 웹 서버는이 파일을 웹 페이지에 표시 할 새 데이터로 2 초마다 업데이트합니다.반복 AJAX가 느린 브라우저를 요청합니다.
페이지를 잠시 실행 한 후에는 서버에서 새 데이터를 가져올 때마다 브라우저가 느려집니다 (초당 두 번). 문제는 간헐적입니다 - 때로는 몇 초간 지속되며 때로는 오래 지속되는 경우도 있습니다.
Firefox에 문제가 있습니다.
function getData() {
var dataVal = parseFloat($("#data").html().substring(0, 100));
doSomethingWithVal(XTEval); // seemingly irrelevant, as it lags without this function too
}
t = 0.5;
function process_xml() {
var xmlhttp = GetXmlHttpObject();
if (xmlhttp === null) {
alert("Your browser does not support AJAX!");
return;
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4) {
document.getElementById("data").innerHTML = xmlhttp.responseText;
getData();
setTimeout('process_xml()', t * 1000); // moved from end of function to here based on a suggestion
}
};
xmlhttp.open("GET", "data.shtml", true);
xmlhttp.send("");
}
function GetXmlHttpObject() {
if (window.XMLHttpRequest)
return new XMLHttpRequest();
if (window.ActiveXObject)
return new ActiveXObject("Microsoft.XMLHTTP");
return null;
}
data.shtml 단순히 포함
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--#echo var="someVal.val" -->
아마도 AJAX를 사용하는 것보다 다른/더 나은 방법이있다?
그 함수에서 "xmlhttp"변수를'var'으로 선언하는 것이 좋습니다. 그것 없이는 전역 변수이고, "process_xml"에 대한 연속적인 호출은 이전 값을 덮어 씁니다. – Pointy
감사합니다! 나는 그 사실을 모르고 그 변화를 만들었습니다. 나는이 코드를 상속했고 천천히 그것을 업데이트했다. –
나는 getData가 귀하의 코드에없고 getXTE가 process_xml에서 호출되지 않는다는 것이 맞습니까? 이 문제를 확인하거나 문제를 해결할 수 있습니까 (XTEVal 및 dataVal 수정 포함) – rene