Wie kann man eine Javascript Variable an PHP übergeben?
Ich habe ein Spiel auf einer Webseite, bei dem das aktuelle Feld immer um eine Zufallszahl erhöht wird. Nun gibt es mehrere Unterseiten wie z.B. Anleitung etc. Wenn man nun anfängt zu spielen, dann die Seite Anleitung aufruft und wieder zurück geht, ist der Fortschritt weg. Ich habe die Variable aktuellesfeld in einer Session gespeichert, die Zufallszahl wird in Javascript generiert. Das PHP- aktuelle Feld wird aber nicht überschrieben, da:
Ich nichts gefunden habe, wie man eine Javascript Variable in PHP speichern kann?
Ich hab es mit document.write(), input hidden und weiteres probiert, funktioniert aber nicht.
Kennt ihr eine Lösung?
2 Antworten
Man kann sie zwar nicht direkt an PHP "übergeben", aber man kann sie via Ajax "durchschleusen", d.h. du erstellst eine PHP Datei, die die Variable via GET (oder POST, je nachdem) in Empfang nimmt und dann sendest du deine Variable via Ajax als GET/POST Request an diese Datei, wo sie dann gespeichert wird.
In deinem Fall würde ich den Ajax Request wohl direkt in die JS-Funktion packen, die die Zufallszahl generiert.
Liegt das vielleicht daran, dass ich einen Apache- Server verwende?
Ne, das hat mit dem Server nichts zu tun.
Ist im Grunde gar nicht so schwer, erst mal eine PHP Datei erstellen, z.B. mit dem Namen ajax.php - deren Inhalt könnte etwa so aussehen:
<?php
$var = $_GET['blubb'];
// in $var steht dann deine Variable, die kannst du z.B. in einer Session speichern
session_start();
$_SESSION['blubb'] = $var;
Alternativ kannst du die Variable statt in einer Session auch in einer DB speichern, in einer Textdatei, einer Cache-Variablen oder wie auch immer, einfach irgendwie so, dass du in einer anderen PHP Datei wieder darauf zugreifen kannst.
Dann musst du deine Variable aus JavaScript nur noch an diese Datei "übergeben", z.B. so:
var blubb = 1234; // Deine JS Variable
// An die Datei senden, hier mit Hilfe von jQuery
$.get('/ajax.php?blubb=' + blubb);
Sobald du also in deiner Funktion für die Zufallszahl die Zahl ermittelt hast, rufst du die $.get Methode von jQuery auf und übergibst damit die Variable an die zuvor erstellte PHP Datei.
jQuery: https://jquery.com/
.get(): https://api.jquery.com/jQuery.get/
jQuery kannst du alternativ auch über das Google CDN einbinden, dafür einfach folgende Zeile in deinen HTML Header einfügen:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
(jQuery muss eingebunden werden bevor du deine Zufallszahl-Funktion aufrufst)
Du kannst es per Ajax an den Server übermitteln.
https://de.wikipedia.org/wiki/Ajax_(Programmierung)
Du kannst stattdessen auch den Inhalt der Unterseiten nachladen ohne die Seite an sich zu aktualisieren. Dann gehen die JavaScript Werte auch nicht verloren.
Und wie mache ich das am Besten?
Ich hab verschiedenes ausprobiert, aber kein Beispiel klappt:(