如何使用PHP将地理位置信息发送到服务器?

时间:2018-12-22 14:35:20

标签: javascript php jquery html location

我正在尝试使用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。

1 个答案:

答案 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。