どうですか:
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);
}
}
};
.readyState
プロパティはその状態を参照します。ここで、4
完了したことを意味します(応答が戻ってきました)。 .status
プロパティはHTTPステータスコードを参照します。通常、200
の間 &400
いいね。 のみの人を見たことがあることは知っています 200
を確認してください (範囲ではありません)。
更新:
リクエストで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"];