Praktikant1: Eine Seite serverseitig aktualisieren

Liebe Community!

Ich suche nach einer Möglichkeit (ob mit Javascript oder etwas anderes) eine Seite serverseitig zu aktualisieren. Mit AJAX möchte ich mich (noch) nicht beschäftigen (da keine Erfahrung). Ich arbeite an einem ASP.NET Projekt und möchte eine Seite aktualisieren, sobald sich etwas an der Datenbank geändert hat. Die Möglichkeit, die Seite automatisch (z.B.) jede 10 Sekunden neu zu laden ist nicht akzeptabel. Wenn man um AJAX nicht drumherumkommt, würde ich um Tipps/Vorschläge bitten!

Besten Dank für Eure Antworten!

  1. Liebe Community!

    Ich suche nach einer Möglichkeit (ob mit Javascript oder etwas anderes) eine Seite serverseitig zu aktualisieren. Mit AJAX möchte ich mich (noch) nicht beschäftigen (da keine Erfahrung). Ich arbeite an einem ASP.NET Projekt und möchte eine Seite aktualisieren, sobald sich etwas an der Datenbank geändert hat. Die Möglichkeit, die Seite automatisch (z.B.) jede 10 Sekunden neu zu laden ist nicht akzeptabel. Wenn man um AJAX nicht drumherumkommt, würde ich um Tipps/Vorschläge bitten!

    Besten Dank für Eure Antworten!

    Das in deine Website einbauen:

    <script type="text/javascript">
    function createRequestObject() {
        var ro;
        var browser = navigator.appName;
        if(browser == "Microsoft Internet Explorer") {
            ro = new ActiveXObject("Microsoft.XMLHTTP");
        } else {
            ro = new XMLHttpRequest();
        }
        return ro;
    }

    var http = createRequestObject();

    function sndReq(element, postdata, action) {
        http.open('POST', action);
     http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        http.onreadystatechange = new Function("handleResponse('" + element + "');");
        http.send(postdata);
    }

    function handleResponse(element) {
        if(http.readyState == 4) {
            document.getElementById(element).innerHTML=http.responseText;
        }
    }
    </script>

    Und so kannst du es verwenden:

    Beispiel anhand eines Formulars:

    <div id="id_eines_divs"></div>
    <form name="fauswahl" method="POST" action="" onSubmit="sndReq('id_eines_divs', 'post_variable='+document.fauswahl.post_variable.value, 'eine_seite.php'); return false;">
    <input name="post_variable" value="irgendwas">
    </form>

    Der Inhalt von eine_seite.php wird nun in das div dynamisch geladen. Was du damit also noch alles anstellen kannst, ist dir überlassen.

    Viel Spaß

    sebbel

  2. Hi Praktikant1,

    Die Möglichkeit, die Seite automatisch (z.B.) jede 10 Sekunden neu zu laden ist nicht akzeptabel.

    Dann ist dein Problem nicht zu lösen - zumindest nicht mit HTTP. HTTP ist so konzipiert, dass

    1. ein Client kommt (Verbindung herstellen)
    2. der Client fragt nach etwas (Request-Daten senden)
    3. der Client bekommt etwas (Server sendet Response-Daten)
    4. der Client geht (Verbindung schließen).

    In dem Moment wo der Client weg ist, hast du - "du" hier als Server - keine Möglichkeit mehr den Clienten zu erreichen und wenn der Client nicht irgendwann noch mal freiwillig wiederkommt, wirst du nie wieder mit ihm in Kontakt geraten.

    Das war jetzt das Abstrakte, nun etwas konkreter auf dein Problem bezogen - du hast zwei Möglichkeiten:
    a) den Client per Meta-Refresh oder Javascript bitten die Seite in regelmäßigen
       Abständen neu zu laden
    b) per AJAX (letztlich also auch per Javascript) Teile der Seite neu vom Server
       laden und anzeigen
    beides jedoch nach dem Grundprinzip der regelmäßigen Aktualisierung der Seite in der Hoffenung, dass auf dem Server mittlerweile neue Informationen vorhanden sind.

    Es gibt noch einen Trick, den man z.B. bei Chats verwendet, welche über HTTP laufen sollen - dabei gaukelt man dem Clienten vor, die Seite wäre noch nicht fertig geladen, lässt ihn dadurch warten und schickt neue Nachrichten des Chats dann noch hinterher.
    Abgesehen davon, dass so etwas scheußlich ist, besteht für dich auch keine Möglichkeit davon zu profitieren - denn du möchtest ja Inhalte aktualisieren, also alte Inhalte durch neue Inhalte ersetzen. Mit dem beschrieben Trick können allerdings nur nachträglich noch Informationen angefügt werden (für einen Chat reicht das ja) - was bereits gesendet wurde, wurde bereits gesendet und kann nicht mehr verändert werden.

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
    Patch zur Verwendung von PATHINFO in JLog
    Wer kämpft, kann verlieren. Wer nicht kämpft, hat schon verloren. (Bertholt Brecht)