Ajax success - Response in PHP-Variable speichern

  • Hallo zusammen,


    ich habe ein kleines Problem. Ich habe eine Tabelle, die mir Daten von Spielern anzeigt.


    Für eine Detailansicht jedes einzelnen Spielers habe ich eine Click-Function erstellt für jedes <tr> element und POSTE das in eine sessionsave.php (dort speicher ich die ID des Spielers in einer $_SESSION)


    Das Problem ist, dass ich allerdings immer die Seite neuladen muss, ehe das Modal die Daten von dem Spieler hat, den ich davor angeklickt habe.


    Sprich, ich muss es irgendwie hinbekommen in der ajax success eine PHP-Variable zu definieren, die ich wiederrum im Modal nutzen kann.


    Der Grund, weshalb ich eine Variable / $_SESSION o.ä. brauche ist folgender:


    Ich greife für die Auswertung der Details auf PHP-Funktionen zu, die wiederum eine Datenbankabfrage starten. Als Übergabe-Parameter brauchen alle Functions jeweils die ID des Spielers.


    Hat jemand eine Idee wie man das lösen könnte?


    Code: Modal
    1. Ausgabe des Vornamens:
    2. echo GetPlayerDetails("firstname", $_SESSION["steamidtable"]);

    Ich habe zum Test bereits versucht, die Daten im Success auszuwerten.

    alert(data) zeigt mir auch jeweils die richtige ID an, die ich ausgewählt habe.


    Ich weis, dass ich mit einem location.reload() im success mein Problem gelöst hätte, aber ich möchte ungern die Seite nochmals neu Laden, weil das mit dem Modal kollidiert und die Seite im Schnitt 2-3 Sekunden zum laden braucht.

  • EDIT: Die Daten der Tabelle hole ich ebenfalls durch eine Functions aus einer Datei, durchlaufe es mit einer foreach-schleife und gebe es anschließend als tabelle aus.


    Also ich hole die Daten in der Func.php (dort hab ich alle Daten des Spielers definiert). Jede function die ich benutze braucht zum einen den Übergabeparamter was es ist, beispielsweise "money" und die ID des Spielers.


    Das sieht wie folgt aus:

    Die ID bekomme ich durch die Click-function, die mir die ID dann per AJAX Post an sessionsave.php schickt und dort als $_SESSIOn abspeichert.


    Aufrufen tue ich dann im Modal so:

    echo GetPlayerDetails("firstname", $_SESSION["steamidtable"]);


    Das Problem ist ja aber, dass das Modal sich gleich öffnet und nicht erst einen Reload braucht. Die Session braucht allerdings einen Reload der Seite, sonst weis die Seite noch nicht, dass die Session einen Inhalt bekommen hat.


    Ich möchte allerdings den Reload verhindern.


    Bestenfalls gibt es eine Möglichkeit, dass ich im Ajax Success sagen könnte, dass die zurückkommenden Daten von der sessionsave.php -> data sind (das habe ich ja schon und gebe es mit alert(data) aus) und das er mir diese in einer PHP-Variable speichern soll $playerfromAjax.


    Dann könnte ich im Modal statt $_SESSIONblabla einfach $playerfromAjax nehmen..

  • Ich verstehe es so bzw würde es so machen.

    Hier bekommst du ja die ID zurück

    Code
    1. bez = tgt.children('td').eq(1).text();

    Dann ein Ajax ausführen zu der Datei "neue_datei.php

    In der Datei holst du die Daten, die du brauchst ,und gibst sie zurück

    In den Ajax Callback baust du dann dein Modal zusammen und zeigst es an .

  • Nachdem ich das ein wenig angesehen habe, würde ich auch so vorgehen, wie Basti in #4 vorgeschlagen hat:

    Zitat

    In der sessionsave.php würde ich die Daten des Spielers holen , und als JSON zurückgeben.

    Im Ajax success nimmst du den JSON auseinander und fügst es dann in das Modal ein und zeigt den Modal dann an

  • Hallo zusammen, ich habe es versucht umzubauen, allerdings scheitere ich grad etwas an der Übergabe von Ajax. Wenn ich mir das im Netzwerkprotokoll anschaue, schickt er es "richtig:


    bez"steam:1103242376e7d4d" (Zahlen mit absicht zum Schutz des Steam-Accounts geändert)


    Wenn ich es mir aber unformattiert anschaue, sieht es so aus:

    bez=steam%3A1234234076e7d4d (Zahlen mit absicht zum Schutz des Steam-Accounts geändert)


    Das Problem: Irgendwie wird der : (doppelpunkt) umgewandelt, was mir anschließend Null-Werte liefert (weil die Datenbank keinen Datensatz findet mit diesem %3A dazwischen..)

  • Hallo zusammen, vielen Dank nochmal! Klappt fast alles.. Das einzige Problem, wo ich einfach nicht mehr weiterweis ist folgendes:


    Ich schicke per on click event ein Befehl an die sessionsave.php. Dort wird die Datenbankabfrage gestartet und gibt mir anschließend die Daten wieder zurück.


    Hier das skript:

    Das ganze funktioniert auch fast einwandfrei. Die einzige Ausnahme ist nämlich, wenn der Lastname ein Umlaut drinnen hat. Sobald im Nachnamen ein Umlaut ist, bekomme ich keinerlei Antwort (Firefox, Netzwerkanalyse beim POST). Es steht einfach da: Keine Antwortdaten für diese Anfrage verfügbar


    Wenn ich allerdings das $row->lastname durch "ööööööööö" ersetze funktioniert es einwandfrei..


    Wisst ihr was man da tun kann oder wo das problem steckt?


    Die Tabelle ist utf8mb4_bin codiert