Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 4 of 4
  1. #1
    New Coder
    Join Date
    Feb 2009
    Posts
    52
    Thanks
    0
    Thanked 0 Times in 0 Posts

    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?

  • #2
    Senior Coder A1ien51's Avatar
    Join Date
    Jun 2002
    Location
    Between DC and Baltimore In a Cave
    Posts
    2,717
    Thanks
    1
    Thanked 94 Times in 88 Posts
    Did you clear your cache and made your you had the latest and greatest code?

    Eric
    Tech Author [Ajax In Action, JavaScript: Visual Blueprint]

  • #3
    New Coder
    Join Date
    Feb 2009
    Posts
    52
    Thanks
    0
    Thanked 0 Times in 0 Posts
    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?

  • #4
    Senior Coder A1ien51's Avatar
    Join Date
    Jun 2002
    Location
    Between DC and Baltimore In a Cave
    Posts
    2,717
    Thanks
    1
    Thanked 94 Times in 88 Posts
    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
    Tech Author [Ajax In Action, JavaScript: Visual Blueprint]


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •