steckl: AJAX: Problem mit Cache bei Aufruf eines Perl-Scripts

Beitrag lesen

Hallo,

ich habe ein Perlscript, das mir bestimmte Datensaetze aus einer Datenbank (mySql) ausliest und in HTML ausgibt. Auf der Seite ist auch noch eine Checkbox:
<input type="checkbox" id="showByUser" onchange="setShowByUser(4833);" />

das (vereinfachte) Javascript dazu schaut so aus:

  
function setShowByUser(pid)  
{  
    var box = 0;  
    if(document.getElementById('showByUser').checked == true)  
    {  
        box = 1;  
    }  
    else  
    {  
        box = 0;  
    }  
    var rtc = getFileContent("changeListMode.pl?box=" + box);  
    location.reload();  
}  
  
  
function getFileContent(file)  
{  
    /* creates a new XMLHTTP request */  
    var xhReq = new createXMLHttpRequest();  
    /* executes the XMLHTTP request */  
    xhReq.open("GET", file, false);  
    xhReq.send(null);  
    var serverResponse = xhReq.responseText;  
    return(serverResponse);  
}  
  
function createXMLHttpRequest()  
{  
    try{ return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}  
    try{ return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}  
    try{ return new XMLHttpRequest(); } catch(e) {}  
    alert("XMLHttpRequest not supported");  
    return null;  
}  

In dem Perlscript changeListMode.pl wird dann ein Wert in einem Textfile geschrieben, je nachdem ob die Checkbox gesetzt ist oder nicht. Dieser wert ist dafuer verantwortlich, welche Daten aus der Datenbank ausgelesen werden, wenn die Seite neu geladen wird. Ausserdem wird dann beim naechsten laden der Haken in der checkbox gesetzt bzw. nicht gesetzt.

Jetzt habe ich ein Problem: wenn im Internetexplorer (6) bei  "Einstellungen -> Temporary internet files -> settings... -> check for newer pages" never oder automatically auswaehle wird changeListMode.pl nichtmehr neu aufgerufen sondern nur der alte Wert aus dem Cache geholt. Somit wird auch der Wert in dem Textfile nicht neu geschrieben, was dazu fuehrt, das die Seite genauso aussieht wie vorher.

Kann ich dem Javascript oder dem Perlscript irgendwie sagen, dass es jedesmal ausgefuehrt werden soll, anstatt aus dem Cache geladen zu werden?

Ich habe es bis jetzt mal mit folgenden Metaangaben in changeListMode.pl versucht, jedoch ohne Erfolg:

  
<meta http-equiv="expires" content="0">  
<meta http-equiv="cache-control" content="no-cache">  
<meta http-equiv="pragma" content="no-cache">  

Ich hoffe ich konnte mein Problem (einigermasen) verdeutlichen, da ich mich hier das erste mal mit AJAX befasst habe.
Die Loesung wuerde wohl auch mit einem einfachen submit() funktionieren, wenn ich das ganze ein wenig umbaue, aber ich wollte mal was neues ausprobieren.

mfG,
steckl