JSON formatieren
Niklas
- javascript
Guten Tag,
Ich habe eine Frontend-Backendanwendung bei der die Kommunikation über serverseitig erstelltes JSON läuft (bzw. laufen soll).
Im Endeffekt wird in recht schnellen, regelmäßigen Abständen der JSON angefordert, weil es sich um eine Multiuser Anwendung handelt.
Jetzt bin ich mir unsicher, wie ich den JSON formatieren soll, so das es am geschicktesten ist.
Übergeben werden aus einer MYSQL Tabelle die Werte "action", "value" und "time".
Beispielsweise wenn ein User sich einloggt, schreibt er in die Tabelle
ACTION: "user_login"
VALUE: "userid, sonsige werte"
TIME: timestamp()
Backend macht daraus JSON und Frontend interpretiert es.
Wenn jetzt aber mehrere User sich gleichzeitig einloggen oder gleichzeitig die gleiche action machen, wie kann ich das dann geschickt dem Frontend übergeben?
(Es können auch mehrere "actions" gleichzeitig geschickt werden)
Ich bin ein bisschen ratlos, weil ich mich mit JSON recht wenig auskenne.
Vielen Dank für eure Hilfe,
Niklas
hi,
Wenn jetzt aber mehrere User sich gleichzeitig einloggen oder gleichzeitig die gleiche action machen, wie kann ich das dann geschickt dem Frontend übergeben?
Na, die sitzen doch nicht alle am gleichen Frontend.
(Es können auch mehrere "actions" gleichzeitig geschickt werden)
Und die Responses kommen genau zu dem Frontend zurück, von wo aus der Request gesendet wurde. Wo genau hast Du damit ein Problem?
Hotti
hi,
hi
Und die Responses kommen genau zu dem Frontend zurück, von wo aus der Request gesendet wurde. Wo genau hast Du damit ein Problem?
Nö, an allen.
Ich weiß nicht genau wie das Json Formatiert werden soll, ich steh total aufm Schlauch
Kann ich so alles richtig ansprechen? Ich benutze JQuery und würde halt in der Callback-Funktion in einer Schleife jeden Teil des "return"-JSONs durchgehen und entscheiden was passieren soll. Nur habe ich von JSON nicht so die Ahnung, und bin mir nicht sicher, ob das so überhaupt klappt:
{"return": {
"move": {
"object": "npc",
"object_id": "81",
"map_id": "23",
"to_x": "811",
"to_y": "284",
"time": "2817277272"
},
"move": {
"object": "npc",
"object_id": "81",
"map_id": "23",
"to_x": "811",
"to_y": "284",
"time": "2817277272"
}
}}
Hallo,
Ich weiß nicht genau wie das Json Formatiert werden soll, ich steh total aufm Schlauch
Na, dann mach dich mal kundig.
[...] bin mir nicht sicher, ob das so überhaupt klappt:
Wohl kaum. Man kann glaub' nicht mehrere Objekteingenschaften mit gleichem Namen ("move") in einem Objekt haben. Nimm lieber ein Array von Objekten:
{"moves": [
{
"object": "npc",
"object_id": "81",
"map_id": "23",
"to_x": "811",
"to_y": "284",
"time": "2817277272"
},
{
"object": "npc",
"object_id": "81",
"map_id": "23",
"to_x": "811",
"to_y": "284",
"time": "2817277272"
},
]}
Gruß, Don P
Ich weiß nicht genau wie das Json Formatiert werden soll, ich steh total aufm Schlauch
Naja, ohne lese wird der auch nicht weggehen, dazu finden sich viele Seiten im Internet, die das genau erklären.
Kann ich so alles richtig ansprechen? Ich benutze JQuery und würde halt in der Callback-Funktion in einer Schleife jeden Teil des "return"-JSONs durchgehen und entscheiden was passieren soll. Nur habe ich von JSON nicht so die Ahnung, und bin mir nicht sicher, ob das so überhaupt klappt:
Les dir mal durch was JSON ist. Auf der Javascript Seite musst du eigentlich gar nichts tun, da das Format JS kompatibel ist, es reicht ein eval. Alternativ kannst du auch die vielen Parser für die jeweilige Sprache verwenden, die auf json.org zu finden sind.
Struppi.
hi,
Kann ich so alles richtig ansprechen?
Wie Struppi schon schrieb, mit JSON bekommst Du ein Object.
Hier mal ein kleines Beispiel, wie die Eigenschaften des Objekts mit dem Namen "hash" an DOM-Elemente zugewiesen werden können:
for(var attr in hash) document.getElementById(attr).innerHTML = hash[attr];
Tricky ist also die vorherige Vergabe der id's an die HTML-Elemente, wenn die id's denselben Namen wie die Attribute des Objekts haben, geht das so mit einer Schleife. Ganz einfach ;-)
Ich benutze JQuery
Na, damit wirds ja noch einfacher. Lies Dich da mal rein.
Hotti