ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-每分钟将用户的地理位置发送到服务器

2019-11-01 10:17:08  阅读:146  来源: 互联网

标签:geolocation mysql php jquery


我正在尝试编写一个应用程序,每分钟左右将用户的地理位置发送到MYSQL数据库.这是我现在拥有的代码,但是没有用.我需要如何更改才能使其正常工作?

JS:

<!DOCTYPE html>
<html>
<head>
<script src="js/jquery.js"></script>
</head>

<body>
<script>
setInterval ( "onPositionUpdate()", 10000 );
function onPositionUpdate(position)
            {
                var lat = position.coords.latitude;
                var lng = position.coords.longitude;
                jQuery.ajax({ type: "POST", 
                    url:  "myURL/location.php", 
                    data: 'x='+lat+ '&y='+lng , 
                    cache: false, 
                        });
                        }

            if(navigator.geolocation)
               navigator.geolocation.watchPosition(onPositionUpdate);
            else
                alert("navigator.geolocation is not available");



</script>
</body>
</html>

和PHP:

<?php
  include 'config.php';

  // database connection
  $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

  // new data

  $x = @$_POST['x'];
  $y = @$_POST['y'];
  // query
  $sql = "update locations set x=?, y=? where username = asd";
  $q = $conn->prepare($sql);
  $q->execute(array($x), ($y));
?>

我想这不是发送多个变量的正确方法,对吗? Firebug的控制台向我展示

 missing } after property list
[Break On This Error]   

data: 'x='+lon+'&y='+lat;

当我仅使用一个值时,它只会将该变量过帐到服务器一次,并且在该控制台提供以下信息之后:

position is undefined
[Break On This Error]   

var lat = position.coords.latitude;

解决方法:

您需要执行以下操作:

var currPosition;
navigator.geolocation.getCurrentPosition(function(position) {
    updatePosition(position);
    setInterval(function(){
        var lat = currPosition.coords.latitude;
        var lng = currPosition.coords.longitude;
        jQuery.ajax({
            type: "POST", 
            url:  "myURL/location.php", 
            data: 'x='+lat+'&y='+lng, 
            cache: false
        });
    }, 1000);
}, errorCallback); 

var watchID = navigator.geolocation.watchPosition(function(position) {
    updatePosition(position);
});

function updatePosition( position ){
    currPosition = position;
}

function errorCallback(error) {
    var msg = "Can't get your location. Error = ";
    if (error.code == 1)
        msg += "PERMISSION_DENIED";
    else if (error.code == 2)
        msg += "POSITION_UNAVAILABLE";
    else if (error.code == 3)
        msg += "TIMEOUT";
    msg += ", msg = "+error.message;

    alert(msg);
}

标签:geolocation,mysql,php,jquery
来源: https://codeday.me/bug/20191101/1982766.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有