Ajax-Problem (Internet Explorer friert ein)

Mr_Vista

Grünschnabel
Hallo!

Habe ein ziemlich seltsames Problem, dass NUR beim Internet Explorer auftritt. Dabei wurde festgestellt, dass es bei älteren sowie bei der neuen 7er Version auftritt.


Folgendes: Bei einem Communityprojekt wird alle 30 Sekunden via Javascript SetIntval() eine Ajaxfunktion aufgerufen, die nach neuen Nachrichten schaut und bei Bedarf ein Popup mit einer Benachrichtigung öffnet. Klappt bei den beiden großen Browsern auch wunderbar...

Problem beim Internet Explorer: Nach einiger Zeit (manche User berichten von 5 Minuten, bei manchen tritt es nach einer Stunde auf, bei wenigen gar nicht) wird eine beliebige Seite vom Server (zum Beispiel ein Gästebuch oder eine Bildergalerie eines Users) nicht zu ende geladen... alle weiteren Versuche eine beliebige Seite aufzurufen schlagen fehl (werden nicht zu ende geladen) ... erst nach Schliessen aller Browserfenster funktioniert es wieder (also nachdem die Session geschlossen wurde)

Ich habe absolut keine Ahnung was es sein könnte... hier noch der Javascript Quelltext:


Code:
<script language="JavaScript" type="text/javascript">
  var http_request = false;

    function macheRequest(user_id) {

        http_request = false;

        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');
                // zu dieser Zeile siehe weiter unten
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
            return false;
        }
        http_request.onreadystatechange = inhalt;
        http_request.open('GET', 'teste_auf_nachrichten.php?user_id='+user_id, true);
        http_request.send(null);

    }

function inhalt() {

        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
                popup(http_request.responseText);
            }
        }

}

function popup(response) {
  if (response > "0") {
    window.open('htm/gb_popup.php?user_id=<?php echo $id_blubb; ?>&neue_eintraege='+response, 'check','width=150,height=80,toolbar=0,directories=0,menubar=0,status=0,resizable=0,left=0,top=0');
  }
}

</script>
 </head>
 <body onload="javascript:popup(<?php echo $neue_eintraege; ?>);setInterval('macheRequest(<?php echo $user_id; ?>)', 30000)">

Danke für's Lesen und eventuelle Denkanstöße! LG
 
Also ich weiß nicht was du mit 'friert ein' meinst. Mir ist bekannt das der IE bei

http_request.open('GET', 'teste_auf_nachrichten.php?user_id='+user_id, true);

die Seite aus dem Cahe nimmt, und nicht neu aufruft.

Setzt der URL den Zeitstempel vor.
Javascript:
var jetzt = new Date();
var v = jetzt.getTime();

http_request.open('GET', 'teste_auf_nachrichten.php?v=' + v + '&user_id='+user_id, true);

Durch die Verschiedenen Zeiten ändert sich jedesmal die URL und der IE lädt die Seite neu. Bei mir konnte ich das Problem so beheben.
 
Zuletzt bearbeitet von einem Moderator:
Hi

Hat das was gebracht? Bin nämlich gerade mit genau der selben Problematik beschäftigt, eine solche Ajaxfunktion zu bauen um im Hintergrund regelmässig die Nachrichten zu checken.

MfG
blueX
 
Zurück