...

View Full Version : Internet Explorer Caching AJAX



millsy007
03-01-2009, 01:41 PM
Hi, I know this is a fairly common issue, and I have tried a number of suggested methods I found to solve. But I still get the same issue of internet explorer working with an old recordset that the user has since updated on my page.

What happens is the user inserts a record (into my coach booking form) but when the user clicks to show the schedule the changes are not reflected in internet explorer, how can I force my function to work with the latest set of data?

The folowing is the function that is used to show the latest schedule:

<script type="text/javascript">
<!--
//Browser Support Code
function GetSchedule(){
var ajaxRequest; // The variable that makes Ajax possible!

try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaxDisplay = document.getElementById('ajaxDiv');
ajaxDisplay.innerHTML = ajaxRequest.responseText;
}
}
var date = document.getElementById('date').value;
var time = document.getElementById('time').value;
// var queryString = "?date=" + date + "&time=" + time;
//
// ajaxRequest.open("GET", "getschedule.php" + queryString,+'&nocache = '+nocache true);
// ajaxRequest.send(null);


var date = document.getElementById('date').value;
var time = document.getElementById('time').value;
var queryString = "?date=" + date + "&time=" + time + '&r= (new Date()).getTime() + Math.round(Math.random() * 10000)';
ajaxRequest.open("GET", "getschedule.php" + queryString, true);
ajaxRequest.send(null);

}

//-->
</script>

To fix I tried:
var queryString = "?date=" + date + "&time=" + time + '&r= (new Date()).getTime() + Math.round(Math.random() * 10000)';
ajaxRequest.open("GET", "getschedule.php" + queryString, true);

And also changing the GET to POST, but still didnt work?

A1ien51
03-01-2009, 11:51 PM
Did you clear your cache and made your you had the latest and greatest code?

Eric

millsy007
03-02-2009, 12:29 AM
In IE, I clicked on 'Delete all' in 'Delete Browsing History' on the 'Internet Options'
Closed the Browser, reopened.
Checked the source and it showed:


var date = document.getElementById('date').value;
var time = document.getElementById('time').value;
var queryString = "?date=" + date + "&time=" + time + '&r= (new Date()).getTime() + Math.round(Math.random() * 10000');

ajaxRequest.open("GET", "getschedule.php" + queryString, true);
ajaxRequest.send(null);


But still had the cache issue?

A1ien51
03-02-2009, 12:44 AM
Are you setting the no cache headers on the server?



header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
header('Pragma: no-cache');
header('Expires: Sat, 1 Jan 2000 00:00:00 GMT');


And a better way to do no caching with XMLHttpRequest Object



xmlhttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");


Eric



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum