Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Vorgehensweise bei Update einzelner Elemente via AJAX
#1
Hi MyBB'ler,

ich habe folgende Situation:
Aktuell werden auf meiner Startseite einige Bereiche mittels AJAX minütlich nachgeladen, und der geänderte Inhalt entsprechend angezeigt. Dabei werden die Daten über die xmlhttp.php angefordert, von einem Plugin bearbeitet, und anschließend der neue HTML-Code (eine <table>) zurückgesendet.
Um diese Aktualisierung noch ein wenig zu optimieren, möchte ich als nächsten Schritt den HTML-Code einsparen, und nurnoch den eigentlichen Inhalt senden. Via Javascript werden dann die alten Inhalte durch die neuen ersetzt.
(Das Senden der Inhalte mit JSON ist kein Problem.)

Nun bin ich mir aber nicht sicher, wie ich auf die einzelnen Elemente zugreifen soll:
Sollte ich jedem Element eine eindeutige ID geben? Das wären vielleicht schätzungsweise 150 IDs, die ich vergeben müsste. Ist es da noch sinnvoll, alle Elemente via $("<ID>") rauszusuchen, oder gibt es bessere Wege, auf die einzelnen Elemente zuzugreifen? (Die Struktur selbst wäre ja bekannt, könnte ich mich da irgendwie durch die einzelnen Elemente "durchhangeln"?)

Wer sich ein genaueres Bild machen will: Auf meiner Seite existiert zB. eine Tabelle mit "Latest Threads", die minütlich via AJAX bereits aktualisiert wird. Und genau hier möchte ich nun keinen HTML-Code mehr schicken, sondern beispielsweise nurnoch Threadtitel, Autor, Datum/Zeit, das Icon und die Anzahl der Antworten. Bei den Latest Posts und den News entsprechend analog.


Ich würde mich freuen, wenn mir jemand einen Lösungsansatz anbieten könnte.
(Ich hoffe mein Anliegen ist einigermaßen gut beschrieben ^^)

MfG Zwoetzen
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren
#2
Irgendwie müssen die einzelnen Elemente ja erkannt werden. Ich kenne deine Situation jetzt nicht genau, aber ohne die IDs geht es wahrscheinlich nicht.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Hi,
also ein eindeutiger Bezug muss schon existieren (z.B. in Form von einer ID).
Unabhängig davon: Ich würde nicht jedes einzelne Element per Ajax laden. Du musst bedenken, dass alles per JavaScript auf dem Client durchgeführt wird. Es wird den User sicher nicht freuen, dass seine CPU bei 80% schwitzt, nur weil (vielfach) ein kleines Wort mit einen riesigen Overhead an JS geladen werden soll...

Außerdem dürfte dein Hoster ebenfalls keine Freude an sowas haben. Das ist severlastiger als mancher Chat. Denn auch wenn nur ein Wort aktualisiert werden soll (per Ajax) ist das ein Request auf den Server - und jeder Request wird mit CPU-Zeit versorgt.

Bist du wirklich sicher, dass du das so umsetzen möchtest?
Zitieren
#4
@ querschläger:
Ich weiß nicht, ob du mich richtig verstanden hast: Ich möchte alle Elemente mit einem Request vom Server "abholen", so wie es jetzt auch schon ist.
Nur anstatt ich nun die gesamte (neue) Tabelle als HTML-Code sende, wollte ich jetzt nur die eigentliche Inhalte senden, hübsch verpackt als JSON.
Das heißt nach wie vor ein "großes" Request für alle neuen Daten, und das einml minütlich.
(Ich will keineswegs alle Wörter einzeln anfordern Wink)

Ich habe mir deshalb gedacht, weil ich dadurch ja etwas Traffic sparen würde (ich muss weniger senden), wobei dann antürlich das JS auf Client-Seite etwas mehr arbeiten muss, da hast du recht.


Der Hauptgedankt bei der Aktion ist eigentlich, dass oich mich ein wenig mehr mit Javascript vertraut machen will, da ich bereits einen weiteren bereich für die Website geplant habe, der viel Gebrauch von JS machen soll, um das ganze dynamischer zu gestalten.

Wenn du jetzt allerdings sagst, es würde nix bringen, statts den HTML-Code nur die Inhalte zu senden, könnte ich mir ach gleich eine andere Aufgabe zum umsetzen suchen, denn Zeit verschwenden möchte ich auch nicht :p


@ StefanT:
Die einzelnen Daten sind momentan in einer Tabelle angeordnet. Gibt es eine Möglichkeit, wenn die Tabelle oder die <tr>s eine ID haben, auf die darin enthaltenen <td>s zuzugreifen?
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren
#5
Ich habe mir das ganze nochmal einige Tage durch den Kopf gehen lassen, und bin zu dem Entschluss gekommen, dass diese Aktion wohl doch eher Zeitverschwendung wäre, auch wenn ich dadurch meine JS-Kenntnisse etwas festigen könnte. Der geringe Gewinn an Übertragungs-Daten ist die Sache irgendwie nicht wert, letztendlich handelt es sich nur um Bytes oder KB, die eingespart werden, und was sind schon Bytes bei den heutigen Internet-Bandbreiten ^^

Trotzdem Danke für eure Antworten Wink
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Pencil Backup einzelner Tabellenspalten importieren Jockl 2 1.621 03.08.2010, 14:14
Letzter Beitrag: Jockl
  Per .htaccess verhindern, dass Unterverzeichnis einzelner Datei vorgezogen wird? Pechente 0 1.607 15.10.2009, 19:13
Letzter Beitrag: Pechente