怎么样:
oReq.open("get", "snap.php?lat=" + localStorage.latitude + "&lon=?" + localStorage.longitude, true);
(你也有localStorage.lon
代替.longitude
)
由于值(字符串)位于变量中,因此您需要连接它们,而不是将它们放入字符串中。
另外,由于您似乎将这些内容传递给 PHP 以保存到数据库,从语义上讲,您应该使用 POST 请求...这与 AJAX 请求的处理方式不同。
在您的 PHP 中,您需要使用:
$latitude = $_GET["lat"];
$longitude = $_GET["lon"];
实际获取通过 GET 请求发送的值。尽管这些值应该被转义以避免 SQL 注入。
另外,我不确定你为什么要设置onload
AJAX 请求的属性。相反,使用onreadystatechange
财产...类似:
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);
}
}
};
The .readyState
property 指的是它的状态,其中4
意味着它已经完成(响应已返回)。这.status
属性指的是 HTTP 状态代码。通常介于200
& 400
很好。我知道我见过人only检查200
(不是范围)。
UPDATE:
为了在请求中传递 POST 参数,您不需要将它们附加到 URL - 而是将它们传递到.send()
方法。这是您的代码的示例:
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));
要在 PHP 中检索它们,您可以使用:
$latitude = $_POST["lat"];
$longitude = $_POST["lon"];