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"];