CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   Ajax and Design (http://www.codingforums.com/forumdisplay.php?f=55)
-   -   Internet Explorer Caching AJAX (http://www.codingforums.com/showthread.php?t=160056)

millsy007 03-01-2009 12:41 PM

Internet Explorer Caching AJAX
 
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 10:51 PM

Did you clear your cache and made your you had the latest and greatest code?

Eric

millsy007 03-01-2009 11:29 PM

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:

Code:

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-01-2009 11:44 PM

Are you setting the no cache headers on the server?

Code:

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

Code:

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


All times are GMT +1. The time now is 01:54 PM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.