我正在尝试使用JavaScript访问地理位置,然后使用PHP将其发送到服务器。我正在使用xmlhttp.open(),xmlhttp.send()以及jQuery.ajax或$ .ajax函数,但它们似乎都不起作用。我应该创建一个<form>
标签来使用GET发送位置信息吗?
我的代码如下:
<!DOCTYPE html>
<html><body>
<h1>Click the following button to share your location!</h1><br>
<button onclick="getLoc();">Share!</button>
<script>
function getLoc()
{
navigator.geolocation.getCurrentPosition(success,error,option);
}
function success(pos)
{
var lat=pos.coords.latitude;
var lng=pos.coords.longitude;
$.ajax({
type: "GET",
url: "loc.php",
data:{ "q1" : "lat" },{ "q2" : "lng" },
cache: false
});
}
function error(err)
{
window.alert("Geolocation not supported!");
}
var option =
{
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
</script>
</body>
</html>
对于PHP部分,我做了以下工作:
<!DOCTYPE html>
<html>
<body>
<?php
$fp=fopen("location.txt","a");
fputs($fp,"Lat: ".$_GET["q1"]." Lang: ".$_GET["q2"]."\n");
fclose($fp);
?>
</body>
</html>
我已经定义了success()如下。
function success(pos)
{
xmlhttp.open("GET","loc.php?q1="+pos.coords.latitude+"&q2="+pos.coords.longitude,true);
xmlhttp.send();
}
我还用XMLHttpRequest替换了xmlhttp。
但是似乎没有一个起作用。如果我可以使用GET进行操作,那么我将尝试使用POST。
答案 0 :(得分:1)
最后,下面的方法起作用了。
function success(pos)
{
var lat=pos.coords.latitude;
var lng=pos.coords.longitude;
$.ajax({
type: "GET",
url: "loc.php",
data: "q1" : $lat, "q2" : $lng,
cache: false
});
}
或者,
function success(pos)
{
window.location='loc.php?q1='+pos.coords.latitude+'&q2='+pos.coords.longitude;
}
第一种方法同时适用于GET和POST。
第二种方法仅适用于GET。