Frage von MinecrafterPG, 76

Wie kann man eine Javascript Variable an PHP weitergeben?

Hi Leute,

ich habe mit Javascript gerade den Standort des Users bestimmt und in einer Javascript Variable gespeichert.

function success(position) {
    lat = position.coords.latitude;
    long = position.coords.longitude;
    document.write('latitude: '+lat+'<br>longitude: '+long);
}
 
function error(msg) {
    console.log(typeof msg == 'string' ? msg : "error");
}
 
if (navigator.geolocation) {

    navigator.geolocation.getCurrentPosition(success, error);
} else {
alert("GeoLocation API ist NICHT verfügbar!");
}

(Das document.wirte schreibt das erstmal nur hin, das ist später überflüssig)

Jetzt möchte ich die Variablen lat und long aber in PHP weiterbearbeiten. Geht das?

Danke schonmal :)

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Gastnr007, 61

php läuft auf dem Server, javascript beim Client, demzufolge muss der Client die Lösung wieder an den Server senden, sonst geht das nicht

Kommentar von MinecrafterPG ,

Das stimmt, aber wie geht das?

Kommentar von Gastnr007 ,

indem du eine Anfrage an den Server schickst, z.B. per XMLRequest: und dann einfach deine Ergebnisse mit in den Header schreibst (z.B. google.com/?antwort=xyz) den kannst du dann dir in php wieder angucken.

Wenn du noch andere Variablen im PhpProgramm von vorher brauchst, kannst du die (vllt verschlüsselt) mit an den Client und zurück versenden,
oder eine Art Key zum Client schicken und den zurück senden lassen, und bevor du deinen php Teil beendet speicherst du die Sachen irgendwie so, dass du mit dem Key auf sie zugreifen kannst, ab (per MySQL z.B.)

Kommentar von MinecrafterPG ,

Okay, die Idee ist nicht schlecht, hast du ein Code Beispiel?

Kommentar von Gastnr007 ,

für den XML-Krams ja, für MySQL oder in-Dateien-schreiben findest du schon was im Netz 

var req = new XMLHttpRequest();
req.open("GET", "http://deintestserver.de/"+deinArgumentString, true);

req.send();

wenn du POST statt GET nimmst ist es nicht ganz so offensichtlich für den Nutzer, dass du noch eine Anfrage gesendet hast

Kommentar von MinecrafterPG ,

Also man könnte es doch eigendlich auch folgendermaßen machen:

function Variable() { 

var javascriptVariable = "Test";
window.location.href = "loc.php?ergebnis=" + javascriptVariable;
}

Aber wie rufe ich das in PHP wieder ab?

Kommentar von Gastnr007 ,

ja das wäre auch eine Möglichkeit, wobei dabei der Nutzer ja die Seite wechselt, was vielleicht nicht gewünscht ist.

in php sieht das Bekommen der Dinge dann so aus:

var javascriptVariable = isset($_GET["ergebnis"]) ? $_GET["ergebnis"]:"";

wenn du Arrays versenden möchtest, musst du diese natürlich erstmal zu einem String umwandeln und danach wieder zurück

Kommentar von maximilianus7 ,

nun bei 2 variablen geht das auch einfacher:

in js:

 window.location.href = "loc.php?lat=" + lat + "&long=" + long; 

in php:

$lat   = $_GET['lat'];

$long = $_GET['long'];

Hinweis wg. XML-Krams: XMLHttpRequest hat ganz und gar nichts mit XML zu tun, das war ein marketing-begriff von microsoft. zum googlen: das verfahren nennt sich AJAX (wobei das X auch für XML steht, wobei AJAX ebenso nichts mit XML zu tun hat).

man kann seine übergabe-parameter in einen XML sring reinprügeln (das war die idee), muss aber nicht.

üblich ist, wenn eine komplexe datenstruktur (wie hier nicht) vorliegt, dieses einfach als JSON-ausdruck (array oder object) zu übergeben und dann in php mit json_decode in eine php-array oder -object zu wandeln. 

Kommentar von MinecrafterPG ,

Danke maximilianus7, funktioniert!!!

Antwort
von leon31415, 36

schaue dir bei jQuery das Kapitel ajax an. Ist dort schöner implementiert.

Keine passende Antwort gefunden?

Fragen Sie die Community