2013-07-16 6 views
4

Я только начал работать с HTML и java-скриптом. Я застрял между ними. Я создал одну веб-страницу, которая считывает данные из XML и выводит на страницу. Я могу сделать это успешно. Но если я изменяю данные XML и обновляю браузер, он не отражает обновленные данные на моей веб-странице. Если я очистил историю браузера вручную, а затем обновил страницу, он отобразит обновленные данные. Но я хочу, чтобы данные обновлялись, как только я обновлял страницу. Я не хочу каждый раз очищать историю браузера.Предотвращение кэширования ответа ajax

Мой сервер - это сервер Apache.

Мой HTML код:

<!DOCTYPE HTML PUBLIC "- HTML 4.0 Transitional//EN"> 

<html> 
<TITLE>DynamicHTML Page</TITLE> 

<META content="text/html; charset=windows-1252" http-equiv=Content-Type> 
<META http-equiv="cache-control" content="no-cache"> 
<meta http-equiv="expires" content="0"> 
<META http-equiv="refresh" content="10";> 
<META name=Author content=""> 
<META name=Keywords content=""> 

<body> 

</div> 
<xml ID="noteXML" 
SRC="note.xml"></xml> 
<script> 

function ReadXML() 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.open("GET","note.xml",false); 
xmlhttp.send(); 
xmlDoc=xmlhttp.responseXML; 

document.getElementById("data").innerHTML= xmlDoc.getElementsByTagName("data")[0].childNodes[0].nodeValue; 
document.getElementById("status").innerHTML= xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue; 

} 

</script> 

<div> 
<b>Require Data :</b> <span id="data"></span><br /> 

<div> 
<b>Current Status:</b> <span id="status"></span><br /> 

<script> 
ReadXML(); 
</script> 
</body> 
</html> 

Мой XML:

<?xml version="1.0" encoding="ISO-8859-1"?> 

<note> 
<data> 450 </data> 
<status> Reading Data From XML </status> 
</note> 

Я также попытался следующие действия, чтобы убедиться, что браузер не будет создавать Cashe, но ничего, кажется, работает.

<META http-equiv="cache-control" content="no-cache"> 
<meta http-equiv="expires" content="0"> 
<META http-equiv="refresh" content="10";> 
+0

try, 'xmlhttp.open (" GET "," note.xml? T = "+ (new Date()), false);' –

+0

Спасибо за ответ Dharmesh ...... попробовал это –

+0

Welcome , используйте это решение, если оно работает для вас, как оно всегда будет работать, в отличие от 'Math.random()', так как вы можете получить такое же случайное число в последующем запросе, где время всегда будет уникальным, и оно никогда не потерпит неудачу. –

ответ

2

Вы можете добавить случайное число в файл:

xmlhttp.open("GET","note.xml?" + Math.random(),false); 

Это гарантирует, что браузер всегда получает самую последнюю версию, потому что она никогда не будет кэш найти в кэше версию, которая соответствует случайной.

+0

Спасибо за ответ ... Я попробую это –

+0

Большое спасибо моему другу ...... я пытался с последних двух дней ... это сработало для меня ..... Еще раз спасибо –

Смежные вопросы