AJAX mit setInterval + variable Übergabe der URL aus Funktion

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • AJAX mit setInterval + variable Übergabe der URL aus Funktion

    Verstehe net was falsch ist.
    ich möchte den div halt aktualisieren alle XX sek. mit einer bestimten URL die über die funktion ja genutzt wird.
    Die soll solange aktualisiert werden bis ich die funktion erneut aufrufe und sich die URL ändert. laufen tut das in etwas so:

    link1 == Seite1
    link2 == Seite2
    link3 == Seite3

    <div id="online"></div>

    wenn ich nun zb.: auf link 1 klicke soll er die seite 1 anzeigen (soweit gehts auch) aber er soll auch den div alle XX Sek. aktualisieren. bis ich auf zb.: link 2 klicke ...
    Wenn ich die URL direkt eingebe in die funktion loadData() geht es aber dann nur diese angegebende seite und nicht die ich per funktion aufrufe (mit dem link) .
    Hoffe man versteht bisschen was ich meine =/

    Quellcode

    1. function seiteladen(seitenurl)
    2. {
    3. xhr = http();
    4. xhr.open("GET", seitenurl, true);
    5. xhr.setRequestHeader("Conent-Type","application/x-www-form-urlencoded");
    6. xhr.onreadystatechange = datenAusgeben;
    7. xhr.send(null);
    8. loadData(seitenurl);
    9. }
    10. function datenAusgeben()
    11. {
    12. if (xhr.readyState == 4) {
    13. var rueckgabe = xhr.responseText;
    14. document.getElementById("div").innerHTML = rueckgabe;
    15. }
    16. }
    17. function loadData(url_abgabe)
    18. {
    19. xhr.open('GET',url_abgabe, true);
    20. xhr.onreadystatechange = function () {
    21. if (xhr.readyState == 4) {
    22. document.getElementById("div").innerHTML = xhr.responseText;
    23. }
    24. };
    25. xhr.send(null);
    26. }
    27. // aktuelle Daten laden
    28. loadData(url_abgabe);
    29. // alle 5 Sekunden neue Daten holen
    30. setInterval('loadData(\''+url_abgabe+'\')',2000);
    Alles anzeigen
  • Hallo,
    dann mach die url_abgabe doch zur globalen Variablen.
    Dann kannst du sie jederzeit ändern und der Parameter entfällt beim Aufruf von loadData.

    Falls du globale Variablen vermeiden willst, kannst du das ganze in eine Klasse packen. Eine Ansatz dazu findest du in diesem Wiki Artikel. Man müsste die Klasse nur um einen setter für die URL erweitern.
    [wiki]Mehrere DIV Container mit AJAX aktualisieren[/wiki]
  • aber wenn ich die direkt als global variable mache ist sie ja fest dann kann ich sie ja nicht mit meinen links ändern.
    oder verstehe ich etwas total falsch...?

    wie gesagt soweit geht es ja wenn ich zb.:

    Quellcode

    1. function loadData()
    2. {
    3. xhr.open('GET',seite.php, true);
    4. }
    5. loadData();
    6. setInterval('loadData()',2000);

    mache. Aber der div springt ja immer dann zur der seite wenn der interval läuft da er ja festen pfad hat. jedoch brauche ich das am besten wenn er die

    Quellcode

    1. function seiteladen(seitenurl)
    2. {
    3. xhr = http();
    4. xhr.open("GET", seitenurl, true);
    5. xhr.setRequestHeader("Conent-Type","application/x-www-form-urlencoded");
    6. xhr.onreadystatechange = datenAusgeben;
    7. xhr.send(null);
    8. loadData(seitenurl);
    9. }

    läuft das er dann fest sagt die URL die er bei der funktion seiteladen() bekommt diese dann auch zu nutzen bei der Aktualisierung bis die funktion erneut aufgerufen wird und eine neue URL gibt.

    Weis net wie ich das lösen soll ggf. meine versuche scheitern alle. Vielleicht könnte mir jemand beispiel geben oder mein Code überarbeiten mit kleiner erklärung. (will es ja auch verstehn net nur haben)
  • Super scheint zu funktionieren.
    Aber ich habe zb.: #8: url_abgabe = seitenurl;
    auch versucht nur ging das nicht. Lag es daran das ich die variable nicht vorher global erstellt habe wie bei deinem: #0: var url_abgabe = 'abc.php'; ?
    Dennoch vielen dank einfach klasse hier die hilfe =) und man kann einiges ganz einfach dazu lernen ^^