好的,所以我在试图找出如何将我保存在localStorage中的一些数据传递给我编写的php脚本时遇到了一些问题,所以我可以将它们发送到服务器上的数据库。我之前找到了一些代码(https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest),看起来好像可以工作,但我没有运气。如何将保存的localStorage Web数据传递给php脚本?
这里就是我保存数据的代码,不是试图通过它在我的phpscript
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(initialize, showError, takeSnap);
}
else {
alert("Geolocation is not supported by this browser.");
}
}
function initialize(position) {
var lat = position.coords.latitude,
lon = position.coords.longitude;
var mapOptions = {
center: new google.maps.LatLng(lat, lon),
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: true
}
var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(lat, lon),
map: map,
title: "Current Location"
});
}
function showError(error) {
switch (error.code) {
case error.PERMISSION_DENIED:
alert("User denied the request for Geolocation.");
break;
case error.POSITION_UNAVAILABLE:
alert("Location information is unavailable.");
break;
case error.TIMEOUT:
alert("The request to get user location timed out.");
break;
case error.UNKNOWN_ERROR:
alert("An unkown error occurred.");
break;
}
}
function storeLocal(position) {
if (typeof (Storage) !== "undefined") {
var lat = position.coords.latitude,
lon = position.coords.longitude;
localStorage.latitude = lat;
localStorage.longitude = lon;
}
else {
alert("Your Browser doesn't support web storage");
}
return
}
function snapShot() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(storeLocal, showError);
}
else {
alert("Geolocation is not supported by this browser.");
}
var oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.open("post", "snap.php?lat=" + localStorage.latitude + "&lon=" + localStorage.longitude, true);
oReq.send();
}
function reqListener() {
console.log(this.reponseText);
}
这是他们的脚本我写的值保存到数据库
<?php
// Connecting to the database
mysql_connect("localhost", "username", "password");
mysql_select_db("db_name");
$latitude = mysql_real_escape_string($_GET["lat"]);
$longitude = mysql_real_escape_string($_GET["lon"]);
// Submit query to insert new data
$sql = "INSERT INTO locationsTbl(locID, lat, lon) VALUES('NULL', '". $latitude ."', '". $longitude . "')";
$result = mysql_query($sql);
// Inform user
echo "<script>alert('Location saved.');</script>";
// Close connection
mysql_close();
?>
是的,但我并不确定如何在我的情况下使用POST请求,因为我没有从窗体的字段中获取信息。它的工作方式是我在页面上创建了一个按钮。它有一个事件监听器,它正在寻找一个图像的点击,而不是抓取地理位置数据并保存它。 – RenegadeScar
@RenegadeScar我明白,但你所做的只是改变'oReq.open(“get”'to'oReq.open(“post”'。然后在PHP中,你用'$ _POST'而不是'$ _GET ' – Ian
ooooh,我明白了。对不起,我对javascript和一般的程序是最新的。谢谢我会试试。 – RenegadeScar