nino: AJAX Problem mit IE6,7 und Opera

Hallo

Ich bin dran Ajax zu lernen und zu verstehen, deshalb habe ich mir vorgenommen ein Gästebuch zu schreiben, welches die Daten jede Sekunden per Ajax neu lädt. Im Firefox funktioniert dies nun tadellos. Allerdings spucken Opera und IE noch rum...

Ich habe irgendwo im Netz nachgelesen, dass IE nicht mit innerHTML klar kommt, man solle outerHTML verwenden. Ich hab das nun mal so umgesetzt, allerdings erfolglos:

function makeRequest()
{
    var http_request = null;

if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
        }
     } 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 != null)
 {
        http_request.open('GET', 'inc/modules/guestbook/inc/sub.php', true);
        http_request.onreadystatechange = function () { contents(http_request); };
        http_request.send(null);
 }
}
function contents(http_request) {

if (http_request.readyState == 4) {
  if (navigator.appName.indexOf("Netscape") != -1){
    document.getElementById("guestbookContent").innerHTML = http_request.responseText;
  }
  if (navigator.appName.indexOf("Explorer") != -1){
   var oParent = document.getElementById('guestbookContent');
   oParent.outerHTML = http_request.responseText;
  }
 }

}

function refresh() {
 window.setTimeout("refresh()",1000);
 makeRequest();
}

Beim starten der Seite wird bei body load die Funktion refresh gestartet. 'guestbookContent' ist im übrigen ein <div>.

Danke für die Hilfestellungen!

  1. Hallo

    Ich bin dran Ajax zu lernen und zu verstehen, deshalb habe ich mir vorgenommen ein Gästebuch zu schreiben, welches die Daten jede Sekunden per Ajax neu lädt. Im Firefox funktioniert dies nun tadellos. Allerdings spucken Opera und IE noch rum...

    Ich habe irgendwo im Netz nachgelesen, dass IE nicht mit innerHTML klar kommt, man solle outerHTML verwenden.

    Der IE kommt mit innerHTML und outerHTML klar. Firefox hingegen nicht. Also genau andersrum.

    Verwende am einfachsten prototype, das bietet dir automatisch einen (http://www.prototypejs.org/) Ajax.PeriodicalUpdater für genau diesen zweck an.

    Gruß, HS

  2. hi,

    Ich bin dran Ajax zu lernen und zu verstehen, deshalb habe ich mir vorgenommen ein Gästebuch zu schreiben, welches die Daten jede Sekunden per Ajax neu lädt.

    Das ist einer der unsinnigsten Anwendungsfälle, den ich mir vorstellen kann.
    So häufig ändert sich an einem Gästebuch nichts, dass man es mit einer schon chat-ähnlichen Frequenz refreshen müsste.

    Einen neuen Gästebucheintrag per AJAX ohne neu Laden des Dokumentes zu machen, das erschiene mir schon eher sinnvoll.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }