tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
295
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Andre_d Andre_d ist offline Mitglied Bronze
    Registriert seit
    Oct 2002
    Ort
    Schinkel (Schleßwig-Holstein)
    Beiträge
    44
    hallo zusammen,

    ich habe eine Frage und zwar habe ich anhand eines Videotutorials eine kleine Shoutbox mit AJAX in Verbindung mit PHP/MySQL gebaut.

    Hier der Javascript-code

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    var reloading_sb = "10000";
     
    function readReq() {
           resObjekt.open('get', 'readshout.php?date' + new Date(),true);
           resObjekt.onreadystatechange = handleResponse2;
           resObjekt.send(null);
    }
     
    function handleResponse2(){
        var text="";
        document.getElementById("readshout").style.visibility = "visible";
        if(resObjekt.readyState == 4) {
            meinJSONObjekt = eval ( "(" + resObjekt.responseText + ")" );
            for(i = 0; i < meinJSONObjekt.ergebnis.length; i++) {
                text += "<!---- JSON inhalte welche aus der DB geladen wurden ---->";
            }
        }else{
        text = "<img src='loading.gif' /> loading...";  
        document.getElementById("readshout").innerHTML = text;  
        }
    }
     
    window.setInterval("readReq()", reloading_sb);

    Nun ist es so, wenn ich die function in Intervalen aufrufe, das man es quasi sieht. Klar sieht man es, ich habe ja auch ein loading.gif eingebaut.
    Aber ich habe bereits Shoutboxen gesehen, wo wenn man etwas geschrieben hat, der geschriebene Text sofort zu sehen ist.

    Und man hat nicht so diesen Reload-Blink-Effekt. wenn ich das mal so nennen darf!

    vieleicht liegt das auch an der Art mein Script in intervalen aufzurufen?

    Würde mich um Rat freuen!

    MfG
    André
     
    Wenn ein Mensch stirbt, ist das eine Tragödie!
    Wenn Millionen sterben ist es Statistik!
    '-> (Stalin)

  2. #2
    marcel_m marcel_m ist offline Mitglied Silber
    Registriert seit
    Jul 2006
    Beiträge
    80
    Hallo,

    mein Ansatz wäre:
    Wenn die Site das erste mal aufgerufen wird in der Db nachsehen, wieviele Beiträge in der DB sind (via fortlaufender ID kein problem)
    Dem JS-Skript
    1) die letzten 5 Beiträge
    2) Anzahl der Beiträge( mittels ID)
    dem JS-Skript zurückgeben.

    Im Intervall:
    Per Ajax dann an das serverseitige Skript die verfügbare ID senden.
    Das Serverseitige Skript soll dann nachsehen, ob es seit dem neue Einträge gibt und die dann ggf. per XML zurückgeben.

    Aus der Anzahl der XML Ergebnise dann die aktuelle ID generieren (ID + Anzahl neuer einträge) und nach kurzer zeit mit der neuen ID anfragen ob neue Einträge vorhanden sind.

    Die Einträge lasse sich ja dann über JS bequem an die aktuellen schon angezeigten Einträge anhängen.

    Ich hoffe, dass ich dir weiterhelfen konnte.

    Viele Grüße

    Marcel
    Geändert von marcel_m (11.12.08 um 15:38 Uhr)
     

  3. #3
    Andre_d Andre_d ist offline Mitglied Bronze
    Registriert seit
    Oct 2002
    Ort
    Schinkel (Schleßwig-Holstein)
    Beiträge
    44
    Hallo marcel,

    momentan ist es so, das alles nicht in xml in der datenbank gespeichert wurde.
    Ist es dennoch möglich die datensätze, wenn neue vorhanden sind, "hinten dran zu hängen" oder ist es einer der Vorteile xml in der SB zu speichern?

    Danke Dir schonmal!

    viele Grüße
    André
     
    Wenn ein Mensch stirbt, ist das eine Tragödie!
    Wenn Millionen sterben ist es Statistik!
    '-> (Stalin)

  4. #4
    marcel_m marcel_m ist offline Mitglied Silber
    Registriert seit
    Jul 2006
    Beiträge
    80
    Hi André,

    wie die Daten in der DB gespeichert sind, ist an sich egal.

    Wichtig wäre, dass das PHP Skript die Ergebnisse aus der Datenbank XML konform zurückgibt (wobei man das nicht zwanghaft mit xml lösen muss.)

    Ein "allgemeiner Code" zum anhängen neuer Daten:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    // Erstelle neues Element
    var neuerBeitrag = document.createElement("div");
     
    // Weise neuem Element Inhalt zu
    neuerBeitrag.innerHTML = text ;
     
    // Füge das neue Element der Shoutbox hinzu
    document.getElementById("readshout").appendChild(neuerBeitrag);

    Hoffe, dass ich helfen konnte

    Grüße ausm Süden Deutschlands

    Marcel
     

Ähnliche Themen

  1. Funktionsaufruf nach AJAX - ohne eval, ohne jQuery?
    Von ZodiacXP im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 02.11.10, 11:53
  2. Ajax: Teil einer Seite reloaden
    Von EGJSoldier im Forum Javascript & Ajax
    Antworten: 12
    Letzter Beitrag: 21.10.09, 12:53
  3. Formular auswerten ohne Reload - AJAX
    Von HeinerK im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 30.04.09, 20:17
  4. Ajax/JSP Tutorials ohne DB
    Von messmar im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 24.10.08, 15:21
  5. Content ohne neuladen mit Ajax verändern
    Von VanHellsehn im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 28.06.08, 13:27