Какво ще кажете за:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(имахте и localStorage.lon
вместо .longitude
)
Тъй като стойностите (низовете) са в променливи, трябва да ги конкатенирате, а не да ги поставяте в низа.
Освен това, тъй като изглежда, че предавате тези неща на вашия PHP, за да ги запишете в базата данни, семантично казано, трябва да използвате POST заявка...която се обработва по различен начин с AJAX заявките.
Във вашия PHP трябва да използвате:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
за да получите действително стойностите, които са били изпратени със заявката GET. Въпреки че тези стойности трябва да бъдат екранирани, за да се избегне SQL инжекция.
Освен това не съм сигурен защо задавате onload
свойство на AJAX заявката. Вместо това използвайте onreadystatechange
свойство...нещо като:
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
свойството се отнася до неговото състояние, където 4
означава, че е готово (отговорът се върна). .status
свойството се отнася до HTTP кода на състоянието. Обикновено между 200
&400
добро е. Знам, че съм виждал само хора проверете за 200
(не е диапазон).
АКТУАЛИЗИРАНЕ:
За да предадете POST параметри в заявката, не ги добавяте към URL адреса - ги предавате в .send()
метод. Ето пример с вашия код:
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));
И за да ги извлечете в PHP, ще използвате:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];