Làm thế nào về:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(bạn cũng đã có localStorage.lon
thay vì .longitude
)
Vì các giá trị (chuỗi) nằm trong các biến, bạn cần nối chúng, không đặt chúng trong chuỗi.
Ngoài ra, vì dường như bạn đang chuyển những thứ này sang PHP của mình để lưu vào cơ sở dữ liệu, về mặt ngữ nghĩa, bạn nên sử dụng một yêu cầu POST ... được xử lý khác với các yêu cầu AJAX.
Trong PHP của bạn, bạn cần sử dụng:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
để thực sự nhận được các giá trị đã được gửi với yêu cầu GET. Mặc dù các giá trị này nên được thoát ra để tránh bị chèn SQL.
Ngoài ra, tôi không chắc tại sao bạn lại đặt onload
thuộc tính của yêu cầu AJAX. Thay vào đó, hãy sử dụng onreadystatechange
tài sản ... đại loại như:
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
thuộc tính đề cập đến trạng thái của nó, trong đó 4
có nghĩa là nó đã hoàn tất (phản hồi đã quay trở lại). .status
thuộc tính đề cập đến mã trạng thái HTTP. Thông thường từ 200
&400
tốt. Tôi biết tôi đã chỉ thấy mọi người kiểm tra 200
(không phải là một phạm vi).
CẬP NHẬT:
Để chuyển các tham số POST trong yêu cầu, bạn không nối chúng vào URL - bạn chuyển chúng vào .send()
phương pháp. Đây là một ví dụ với mã của bạn:
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));
Và để truy xuất chúng bằng PHP, bạn sẽ sử dụng:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];