2014-01-23 6 views
0

노드 값을 html div에 삽입하는 네이티브 AJAX 요청이 있습니다. 웹 사이트가 실행되는 동안 XML 값을 변경하여 서버에 업로드하면 Chrome과 IE에서 값을 업데이트하지 않으며 (Shift-F5를 다시로드해도 도움이되지 않음) Firefox가 얼마 후에 (이후가 아닌) 값을 업데이트합니다 setInterval의 1000ms).XML 파일에 대한 Ajax 요청

HTML 파일의 AJAX 스크립트는 다음과 같습니다

<script> 

    //----ANFANG AJAX REQUEST 

    function loadXMLDoc() 
    { 
    var xmlhttp; 
    var txt,x,i; 
    if (window.XMLHttpRequest) 
     {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
     } 
    else 
     {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
    xmlhttp.onreadystatechange=function() 
     { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     xmlDoc=xmlhttp.responseXML; 
     txt=""; 
     x=xmlDoc.getElementsByTagName("Value"); 
      /* 
      for (i=0;i<x.length;i++) 
      { 
      txt=txt + x[i].childNodes[0].nodeValue + "<br>"; 
      } 
      */ 
     txt=x[0].childNodes[0].nodeValue; 
     document.getElementById("Eingabe_Web").innerHTML=txt;  
     txt=x[1].childNodes[0].nodeValue; 
     document.getElementById("differenzdruck").innerHTML=txt; 
     txt=x[2].childNodes[0].nodeValue; 
     document.getElementById("w1").innerHTML=txt; 
     txt=x[3].childNodes[0].nodeValue; 
     document.getElementById("w2").innerHTML=txt; 
     txt=x[4].childNodes[0].nodeValue; 
     document.getElementById("w3").innerHTML=txt; 
     txt=x[5].childNodes[0].nodeValue; 
     document.getElementById("w4").innerHTML=txt; 
     txt=x[6].childNodes[0].nodeValue; 
     document.getElementById("w5").innerHTML=txt; 
     txt=x[7].childNodes[0].nodeValue; 
     document.getElementById("w6").innerHTML=txt; 
     txt=x[8].childNodes[0].nodeValue; 
     document.getElementById("w7").innerHTML=txt; 
     txt=x[9].childNodes[0].nodeValue; 
     document.getElementById("w8").innerHTML=txt;  
     txt=x[10].childNodes[0].nodeValue; 
     document.getElementById("w9").innerHTML=txt; 
     } 
     } 
    xmlhttp.open("GET","einlesen.xml",true); 
    xmlhttp.send(); 
    document.getElementById("refresh").innerHTML = new Date().getTime(); 

    } 

    var refresh = window.setInterval("loadXMLDoc()",1000); 


    //----ENDE AJAX REQUEST 
    </script> 

XML 파일은 다음과 같습니다

<Values> 
<Value><![CDATA[<img src="status-gruen:="Eingabe_Web":.png" style="width:35px;"/>]]></Value> 
<Value><![CDATA[:="Differenzdruck_Web":]]></Value> 
<Value><![CDATA[:="Abreinig_Beginn_Web":]]></Value> 
<Value>:="Abreinig_Ende_Web":</Value> 
<Value>:="Abreinig_Alarm_Web":</Value> 
<Value>:="Abreinig_Pause_Web":</Value> 
<Value>:="Abreinig_Offline_Web":</Value> 
<Value>:="Abreinig_Intervall_Web":</Value> 
<Value><![CDATA[<img src="status-gruen:="Ventilator_Web":.png" style="width:35px;"/>]]></Value> 
<Value><![CDATA[<img src="status-gruen:="Abreinigung_Web":.png" style="width:35px;">]]></Value> 
<Value><![CDATA[<img src="status-rot:="Alarm_Web":.png" style="width:35px;">]]> </Value> 
</Values> 

답변

1

브라우저 cache이 문제가 발생할 수 있습니다. cache

xmlhttp.open("GET","einlesen.xml?q="+(new Date()).getTime()+"",true); 
+0

잘 됐네. 감사합니다 – user2164882

1

당신은 정적 파일의 캐시 된 버전을 가져 오는 방지하기 위해 표준 트릭을 사용해야 방지하기 위해 URL에 임의의 쿼리 (즉있을 수 있습니다 타임 스탬프) 문자열을 추가합니다.

예 :

var tstamp = new Date().getTime(); 
xmlhttp.open("GET","einlesen.xml?v="+tstamp,true); 
+0

다른 하나는 이미 그래서 내가 이것을 시도하지 않았다,하지만 나는 또한 이것을 downvote하지 않았다. 그냥 알려주 네. – user2164882

+1

차이점은 타임 스탬프를 사용하는 것이 항상 고유 한 반면 random은 동일한 숫자를 출력 할 수 있습니다 (가능성은 낮지 만 발생할 수 있음). 나는 실제로 아래 표를 걱정하지 않는다 :) –

0

아마 캐시가이 문제를 일으키는. 브라우저에서 비밀 모드를 시도해보십시오. PC 브라우저를 사용하고 있지만 모바일이 아닌지 확인하십시오.

For chrome shortcut, CTRL + SHIFT + N 
For firefox shortcut, CTRL + SHIFT + P