Que tal:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(você também tinha
localStorage.lon
em vez de .longitude
) Como os valores (strings) estão em variáveis, você precisa concatená-los, não colocá-los na string.
Além disso, como você parece estar passando essas coisas para o seu PHP para salvar no banco de dados, semanticamente falando, você deve usar uma solicitação POST... que é tratada de maneira diferente com solicitações AJAX.
No seu PHP, você precisa usar:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
para realmente obter os valores que foram enviados com a solicitação GET. Embora esses valores devam ser escapados para evitar injeção de SQL.
Além disso, não sei por que você está configurando o
onload
propriedade da solicitação AJAX. Em vez disso, use o onreadystatechange
propriedade... algo como: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);
}
}
};
O
.readyState
propriedade refere-se ao seu estado, onde 4
significa que está feito (a resposta voltou). O .status
A propriedade refere-se ao código de status HTTP. Normalmente entre 200
&400
é bom. Eu sei que vi pessoas somente verifique se há 200
(não um intervalo). ATUALIZAÇÃO:
Para passar parâmetros POST na solicitação, você não os anexa à URL - você os passa no
.send()
método. Segue um exemplo com seu código: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 para recuperá-los em PHP, você usaria:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];