Vad sägs om:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(du hade också localStorage.lon
istället för .longitude
)
Eftersom värdena (strängarna) finns i variabler måste du sammanfoga dem, inte lägga dem i strängen.
Dessutom, eftersom du verkar skicka dessa saker till din PHP för att spara till databasen, semantiskt sett, bör du använda en POST-förfrågan...som hanteras annorlunda med AJAX-förfrågningar.
I din PHP måste du använda:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
för att faktiskt få de värden som skickades med GET-förfrågan. Även om dessa värden bör escapes för att undvika SQL-injektion.
Dessutom är jag inte säker på varför du ställer in onload
AJAX-förfrågans egendom. Använd istället onreadystatechange
egendom...något i stil med:
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);
}
}
};
.readyState
egenskap hänvisar till dess tillstånd, där 4
betyder att det är klart (svaret har kommit tillbaka). .status
egenskapen refererar till HTTP-statuskoden. Normalt mellan 200
&400
är bra. Jag vet att jag bara har sett människor kontrollera efter 200
(inte ett intervall).
UPPDATERING:
För att skicka POST-parametrar i begäran lägger du inte till dem i webbadressen - du skickar dem i .send()
metod. Här är ett exempel med din kod:
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));
Och för att hämta dem i PHP, skulle du använda:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];