Bagaimana dengan:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(Anda juga memiliki localStorage.lon
bukannya .longitude
)
Karena nilai (string) ada dalam variabel, Anda perlu menggabungkannya, bukan memasukkannya ke dalam string.
Juga, karena Anda tampaknya meneruskan hal-hal ini ke PHP Anda untuk disimpan ke database, secara semantik, Anda harus menggunakan permintaan POST...yang ditangani secara berbeda dengan permintaan AJAX.
Di PHP Anda, Anda perlu menggunakan:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
untuk benar-benar mendapatkan nilai yang dikirim dengan permintaan GET. Meskipun nilai-nilai ini harus diloloskan untuk menghindari injeksi SQL.
Juga, saya tidak yakin mengapa Anda menyetel onload
properti dari permintaan AJAX. Sebagai gantinya, gunakan onreadystatechange
properti...sesuatu seperti:
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
properti mengacu pada statusnya, di mana 4
berarti sudah selesai (respon telah kembali). .status
properti mengacu pada kode status HTTP. Biasanya antara 200
&400
baik. Saya tahu saya pernah melihat orang hanya periksa 200
(bukan rentang).
PERBARUI:
Untuk meneruskan parameter POST dalam permintaan, Anda tidak menambahkannya ke URL - Anda meneruskannya di .send()
metode. Berikut ini contoh dengan kode Anda:
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));
Dan untuk mengambilnya kembali dalam PHP, Anda akan menggunakan:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];