Co třeba:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(také jste měli localStorage.lon
místo .longitude
)
Protože hodnoty (řetězce) jsou v proměnných, musíte je zřetězit, nikoli vkládat do řetězce.
Vzhledem k tomu, že se zdá, že tyto věci předáváte svému PHP, abyste je uložili do databáze, sémanticky řečeno, měli byste používat požadavek POST...který se s požadavky AJAX zpracovává jinak.
Ve vašem PHP musíte použít:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
skutečně získat hodnoty, které byly odeslány s požadavkem GET. Ačkoli by tyto hodnoty měly být zakódovány, aby se zabránilo vkládání SQL.
Také si nejsem jistý, proč nastavujete onload
vlastnost požadavku AJAX. Místo toho použijte onreadystatechange
vlastnost...něco jako:
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
vlastnost odkazuje na svůj stav, kde 4
znamená, že je hotovo (odpověď se vrátila). .status
vlastnost odkazuje na stavový kód HTTP. Normálně mezi 200
&400
je dobrý. Vím, že jsem viděl pouze lidi zkontrolujte 200
(není rozsah).
AKTUALIZACE:
Aby bylo možné předat parametry POST v požadavku, nepřipojujete je k adrese URL – předáváte je v .send()
metoda. Zde je příklad vašeho kódu:
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));
A k jejich načtení v PHP byste použili:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];