A co powiesz na:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(miałeś też localStorage.lon
zamiast .longitude
)
Ponieważ wartości (łańcuchy) znajdują się w zmiennych, należy je łączyć, a nie umieszczać w ciągu.
Ponadto, ponieważ wydaje się, że przekazujesz te rzeczy do swojego PHP, aby zapisać je w bazie danych, mówiąc semantycznie, powinieneś używać żądania POST... które jest obsługiwane inaczej w przypadku żądań AJAX.
W swoim PHP musisz użyć:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
aby faktycznie uzyskać wartości, które zostały wysłane z żądaniem GET. Chociaż te wartości powinny zostać zmienione, aby uniknąć wstrzyknięcia SQL.
Ponadto nie jestem pewien, dlaczego ustawiasz onload
właściwość żądania AJAX. Zamiast tego użyj onreadystatechange
nieruchomość... coś takiego:
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
właściwość odnosi się do jej stanu, gdzie 4
oznacza, że zostało to zrobione (odpowiedź wróciła). .status
właściwość odnosi się do kodu stanu HTTP. Zwykle od 200
&400
jest dobry. Wiem, że widziałem ludzi tylko sprawdź 200
(nie zakres).
AKTUALIZACJA:
Aby przekazać parametry POST w żądaniu, nie dołączasz ich do adresu URL - przekazujesz je w .send()
metoda. Oto przykład z Twoim kodem:
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));
Aby pobrać je w PHP, użyjesz:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];