AJAX String aktualisieren

  • Hallo zusammen,

    vorweg etwas zu meiner Seite: Ich habe eine Seite erstellt, auf der ich Balken anzeige. Diese Balken werden in einer JavaScript Datei erzeugt. In der JS Datei werden die benötigten Daten von einem Webserver über PHP gezogen.

    Zur Zeit aktualisiere ich die Seite immer komplett. Ich möchte aber nur die Balken aktualisieren.

    Im ersten Bild ist zu sehen, wie ich die Daten vom Webserver ziehe und diese Daten in Zeichnen(strResponseText) speicher.

    Im zweiten Bild werden diese Daten der function übergeben und geparsed.

    Jetzt möchte ich das alles mit AJAX machen und immer nur die Daten aktualisieren und nicht die ganze Seite. Kann mir da jemand helfen ?

    Vielen Dank für die Mühe.

  • Zitat

    Im ersten Bild ist zu sehen, wie ich die Daten vom Webserver ziehe und diese Daten in Zeichnen(strResponseText) speicher.

    Im zweiten Bild werden diese Daten der function übergeben und geparsed.

    Jetzt möchte ich das alles mit AJAX machen und immer nur die Daten aktualisieren und nicht die ganze Seite.

    Verstehe nicht ganz: Was Du da in deinem ersten Bild zeigst ist Ajax. Wenn trotzdem deine ganze Seite aktualisiert wird, musst Du irgend wo einen Fehler machen, der aber aus den beiden Bildern nicht zu erkennen ist. Am besten postest Du mal die URL der Seite, damit man es sich in Aktion ansehen kann.

  • Ja er aktualisiert es noch garnicht er aktualisiert die ganze Geschicht nur über einen separaten Befehl.

    Ich kann die URL leider nicht hochladen, ist liegt alles in einem Firmennetzwerk.


    Was muss ich denn ändern damit er mir die Daten regelmäßig zieht?

  • Zitat

    er aktualisiert die ganze Geschicht nur über einen separaten Befehl.

    Was heißt das genau? Was aktualisiert er, die ganze Seite oder nur bestimmte Daten/Inhalte? Poste den Code dieses separaten Befehls.

    Zitat

    Was muss ich denn ändern damit er mir die Daten regelmäßig zieht?

    Die Daten zyklisch abfragen durch die Verwendung von setInterval().

  • er aktualisiert nur die ganze seite


    Wo und wie muss ich denn das setInterval() verbauen?


    var hR = new XMLHttpRequest();

    var strResponseText = "";

    hR.onreadystatechange = function(){

    if ( hR.status == 200 && hR.readyState == 4 ){

    strResponseText = hR.responseText;

    Zeichnen(strResponseText);

    }

    };


    hR.open("GET", "seite.php", true);

    hR.send(null);

  • Ah, jetzt verstehe ich, Du aktualisierst die ganze Seite, nur um die Daten zu aktualisieren. Da Du den Ajax-Code ja schon hast, ist es eine Kleinigkeit, es umzustellen: Den Code in eine Funktion packen und diese mit setInterval zyklisch aufrufen:

  • ok nur vorher habe ich das strResponseText ja an Zeichen übergeben was muss ich nun noch verändern damit das jetzt auch noch funktioniert?


    Jetzt lädt der meine Seite halt nur einmal und aktualisiert das nicht

  • Ich meine gar nichts. In der Funktion aktualisieren() wird ja die Funktion Zeichnen() aufgerufen. Den Code, mit dem sie definiert wird, musst Du natürlich bei behalten.

    Wenn er nicht aktualisiert, muss das einen anderen Grund haben. Ist irgend etwas in der Console zu erkennen?

  • sobald ich die console öffne aktualisiert er das aber er spackt dabei etwas rum der balken wird erst etwas dicker und die schrift ist weg und dann ist wieder alles gut.

    wenn ich die console aber wieder schließe aktualisiert sich nichts mehr

  • Zitat

    was ist das onreadystatechange?

    Damit meine ich dies:

    Code
        hR.onreadystatechange = function(){
            if ( hR.status == 200 && hR.readyState == 4 ){
                strResponseText = hR.responseText;
                Zeichnen(strResponseText);
            }
        };

    Dort wird die Funktion Zeichnen() aufgerufen, sobald die Antwort vom Server eintrifft und Du darfst sie auch nur dort aufrufen, weil sonst die Daten nicht zur Verfügung stehen.

    Zitat

    Warum aktualisiert er das denn nur wenn ich die console offen habe ?

    Dafür habe ich keine Erklärung. Bist Du sicher, dass er nicht aktualisiert, wenn die Console nicht offen ist?

  • Ja ich habe Sie nur da aufgerufen und halt einmal definiert aber sonst nirgends.

    ja er aktualisiert es nicht selbst wenn ich die Seite mit F5 aktualisiere wird nichts aktualisiert. Nur wenn ich die console öffne dann aktualisiert er es.

    ich benutze internet explorer ist das vielleicht ein problem ?


    Ganz komisch immer wenn eine Datenbankabfrage getätigt wird, und der Wert in der HTML sich ändert spackt der Balken rum.

  • Der IE macht häufig Probleme, aber in diesem Fall habe ich keinen Anhaltspunkt dafür, dass es daran liegt. Du kannst trotzdem probeweise einen anderen Browser testen.

    Versuche, einen Checkpoint in den Code einzubauen und beobachte die Console:

    Code
        hR.onreadystatechange = function(){
            if ( hR.status == 200 && hR.readyState == 4 ){
                console.log("response");
                strResponseText = hR.responseText;
                Zeichnen(strResponseText);
            }
        };
  • Ich befürchte das er irgendwas verwechselt.

    Wenn die console auf ist kann man ja am besten sehe ob er aktualiesiert.

    Wahrscheinlich aktualisiert er auch bei geschlossener Console,nur man sieht es dann ja nicht mehr wenn das optische von der Console fehlt.

    Einfach mal bei geschlossener Console ein Alert einbauen,dann sieht man ja ob er aktualiesiert.

  • ich habe mal ein alert mit eingebaut und solange ich die console aus habe aktualisiert sich der wert nicht.

    Wenn ich aber dann die console an mache dann wird der Wert aktualisiert.

    ich habe aber drei fehlermedlungen in der console.

  • Die vorletzte Fehlermeldung kannst Du leicht beheben, wenn Du der Empfehlung dort folgst. Ich erwarte aber nicht, dass das das Problem löst.

    Zitat

    solange ich die console aus habe aktualisiert sich der wert nicht.

    Wenn ich aber dann die console an mache dann wird der Wert aktualisiert.

    Das ist mir ein Rätsel. Poste doch mal mehr Code aus dem Umfeld des Ajax. Die ganze Seite ist wahrscheinlich zu umfangreich, das ganze Zeichnen.

  • ich hätte da wo "console.log( bla bla,,,,)" steht mal

    "alert( bla bla,,,,)" hingeschrieben.

    wenn der alert dann nicht auftaucht ,istes ja sehr merkwürdig.

    selbst wen der consolen log ein syntax fehler oder klammer vergessen oder sonst was hat,erklärt mir das verhalten auch nicht.

    ich wüsste nicht mal wie man sowas absichtlich erzeugen kann

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!