¿Qué tal:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(también tenía localStorage.lon
en lugar de .longitude
)
Dado que los valores (cadenas) están en variables, debe concatenarlos, no ponerlos en la cadena.
Además, dado que parece estar pasando estas cosas a su PHP para guardarlas en la base de datos, semánticamente hablando, debería usar una solicitud POST... que se maneja de manera diferente con las solicitudes AJAX.
En tu PHP, necesitas usar:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
para obtener realmente los valores que se enviaron con la solicitud GET. Aunque estos valores deben escaparse para evitar la inyección de SQL.
Además, no estoy seguro de por qué está configurando onload
propiedad de la solicitud AJAX. En su lugar, utilice el onreadystatechange
propiedad... 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);
}
}
};
El .readyState
propiedad se refiere a su estado, donde 4
significa que está hecho (la respuesta ha regresado). El .status
La propiedad hace referencia al código de estado HTTP. Normalmente entre 200
&400
es bueno. Sé que he visto gente solo buscar 200
(no un rango).
ACTUALIZACIÓN:
Para pasar parámetros POST en la solicitud, no los agrega a la URL; los pasa en .send()
método. Aquí hay un ejemplo con su 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));
Y para recuperarlos en PHP, usaría:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];