Wat dacht je van:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(je had ook localStorage.lon
in plaats van .longitude
)
Aangezien de waarden (tekenreeksen) in variabelen zijn, moet u ze samenvoegen, niet in de tekenreeks plaatsen.
Bovendien, aangezien je deze dingen lijkt door te geven aan je PHP om op te slaan in de database, zou je semantisch gezien een POST-verzoek moeten gebruiken... die anders wordt behandeld met AJAX-verzoeken.
In je PHP moet je het volgende gebruiken:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
om daadwerkelijk de waarden te krijgen die zijn verzonden met het GET-verzoek. Hoewel deze waarden moeten worden ontsnapt om SQL-injectie te voorkomen.
Ik weet ook niet zeker waarom je de onload
. instelt eigendom van het AJAX-verzoek. Gebruik in plaats daarvan de onreadystatechange
eigendom...zoiets als:
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);
}
}
};
De .readyState
eigenschap verwijst naar de staat, waarbij 4
betekent dat het klaar is (reactie is teruggekomen). De .status
eigenschap verwijst naar de HTTP-statuscode. Normaal gesproken tussen 200
&400
is goed. Ik weet dat ik alleen mensen heb gezien controleer op 200
(geen bereik).
UPDATE:
Om POST-parameters in het verzoek door te geven, voegt u ze niet toe aan de URL - u geeft ze door in de .send()
methode. Hier is een voorbeeld met uw code:
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));
En om ze in PHP op te halen, gebruik je:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];