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
    Ausgabe des Vornamens:
    
    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.

  • Oder andersrum: Kann ich auch anders die Function mit der ID befüllen? Muss nicht zwingend eine Session sein, ich brauch nur irgendwas, wo ich der Function übergebe damit die weis, dass sie in der datenbank suchen muss (SELECT XY from XY where XY = $Variable)

  • Man müsste das mal komplett sehen dann wäre es ja besser.

    Wie kommen die Daten in das Modal rein?

    Beim Seiten Start?

    Ich würde die Daten über das Ajax holen, und das, was dann zurückkommt, in den Modal einfügen.


    Muss der Umweg über die Session überhaupt sein?

  • Ok zusammengeschrieben.

    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

  • 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
    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,


    ihr habt recht. Wieso umständlich, wenns auch einfacher geht! Wenn ich die Funktion direkt in die sessionsave.php baue hab ich dadurch den Vorteil, dass alle daten per ajax zurückkommen und ich diese "appenden" kann.

  • 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..)

  • Okay, fehler dürfte ein anderer sein. Wenn ich die $_POST Variable auslese, ist die richtige drinnen.. Bekomme solche Fehler:

    Warning: Attempt to read property


    Das schaue ich mir jetzt im Detail an

  • 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

  • bekomme ich keinerlei Antwort (Firefox, Netzwerkanalyse beim POST). Es steht einfach da: Keine Antwortdaten für diese Anfrage verfügbar

    Das kommt meistens vor, wenn PHP irgendwelche Errors haben.

    Bei kleineren Notic Fehle läuft de5 Code meistens weiter.

    Was ist, wenn die anderen Einträge ein ä,ü,ö haben , ist das da auch so ?

Jetzt mitmachen!

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