Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso passare i dati web di localStorage salvati a uno script php?

Che ne dici di:

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

(avevi anche localStorage.lon invece di .longitude )

Poiché i valori (stringhe) sono nelle variabili, è necessario concatenarli, non inserirli nella stringa.

Inoltre, dal momento che sembra che tu stia passando queste cose al tuo PHP per salvarle nel database, semanticamente parlando, dovresti usare una richiesta POST... che viene gestita in modo diverso con le richieste AJAX.

Nel tuo PHP, devi usare:

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

per ottenere effettivamente i valori che sono stati inviati con la richiesta GET. Sebbene questi valori debbano essere sottoposti a escape per evitare SQL injection.

Inoltre, non sono sicuro del motivo per cui stai impostando il onload proprietà della richiesta AJAX. Invece, usa onreadystatechange proprietà... qualcosa come:

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);
        }
    }
};

Il .readyState la proprietà si riferisce al suo stato, dove 4 significa che è fatto (la risposta è tornata). Il .status la proprietà si riferisce al codice di stato HTTP. Normalmente tra 200 &400 è buono. So di aver visto persone solo controlla 200 (non un intervallo).

AGGIORNAMENTO:

Per passare i parametri POST nella richiesta, non li aggiungi all'URL, li passi nel .send() metodo. Ecco un esempio con il tuo codice:

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));

E per recuperarli in PHP, useresti:

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