Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich gespeicherte localStorage-Webdaten an ein PHP-Skript übergeben?

Wie wäre es mit:

oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);

(Sie hatten auch localStorage.lon statt .longitude )

Da sich die Werte (Strings) in Variablen befinden, müssen Sie sie verketten und nicht in den String einfügen.

Da Sie diese Dinge anscheinend an Ihr PHP übergeben, um sie in der Datenbank zu speichern, sollten Sie semantisch gesehen eine POST-Anforderung verwenden ... die anders gehandhabt wird als AJAX-Anforderungen.

In Ihrem PHP müssen Sie Folgendes verwenden:

$latitude = $_GET["lat"];
$longitude = $_GET["lon"];

um tatsächlich die Werte zu erhalten, die mit der GET-Anforderung gesendet wurden. Obwohl diese Werte maskiert werden sollten, um SQL-Injection zu vermeiden.

Außerdem bin ich mir nicht sicher, warum Sie onload festlegen Eigenschaft der AJAX-Anfrage. Verwenden Sie stattdessen onreadystatechange Eigentum ...etwas wie:

oReq.onreadystatechange = function () {
    if (oReq.readyState === 4) {
        if (oReq.status > 199 && oReq.status < 400) {
            console.log("successful response");
        } else {
            console.log("failed response: " + oReq.status);
        }
    }
};

Der .readyState Eigenschaft bezieht sich auf seinen Zustand, wobei 4 bedeutet, dass es erledigt ist (Antwort ist zurückgekommen). Der .status -Eigenschaft bezieht sich auf den HTTP-Statuscode. Normalerweise zwischen 200 &400 ist gut. Ich weiß, dass ich nur Menschen gesehen habe Suchen Sie nach 200 (kein Bereich).

AKTUALISIERUNG:

Um POST-Parameter in der Anfrage zu übergeben, hängen Sie sie nicht an die URL an – Sie übergeben sie in .send() Methode. Hier ist ein Beispiel mit Ihrem Code:

oReq.open("POST", "snap.php", true);
oReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
oReq.send("lat=" + encodeURIComponent(localStorage.latitude) + "&lon=" + encodeURIComponent(localStorage.longitude));

Und um sie in PHP abzurufen, verwenden Sie:

$latitude = $_POST["lat"];
$longitude = $_POST["lon"];