PHP如何获取JS变量及变量的值?

如题,代码如下

var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
    if(this.getStatus() == BMAP_STATUS_SUCCESS){
        alert('您的位置:'+r.point.lng+','+r.point.lat);
    }
    else {
        alert('failed'+this.getStatus());
    }
},{enableHighAccuracy: true});

上面代码是获取用户当前经纬度的js代码,请问用PHP如何获取r.point.lngr.point.lat呢?(我试了设置cookie,但有时会失效,而且无法实时的获取用户当前位置,特别影响使用。而PHP只能通过IP获取经纬度,但在移动数据下IP定位相差十万八千里跟WIFI下定位又不相同。)

希望能帮我解决这一问题,T-T,如果有效率更高的方法,还望能够告之,非常感谢!~我不会AJAX,完全不知道如何下手。T-T。

阅读 13.4k
3 个回答

javascript ajax

// 这里定义后端php的接收url
var url = 'php.php';
// 定义传给后台php的参数  经度和纬度
var data = {
    lng: r.point.lng,
    lat: r.point.lat
};

$.post(url, data , function(data) {
    // data是php返回给前台的数据 用于前端获取php的运行结果
    if(data.status == 200) {
        
    }
}, 'JSON');

php

<?php

// php获取前台传过来的经度、纬度
$lng = $_POST['lng'];
$lat = $_POST['lat']

// do something 

如果只是获取JS的值的话,走个ajax异步,PHP服务端接一下参数就行吧。优化好,用户体验上应该感觉不到差别。

首先要弄清楚生命周期和处理过程:
用户请求->服务端渲染(PHP)->输出给客户端->浏览器渲染(HTML CSS JS)
在这样一个前提下,PHP渲染在JS渲染之前,而且JS渲染仅限于浏览器层面,因此你要实现PHP直接取JS变量值不可能。
因此楼上两位朋友说到的ajax方法其实非常正确,也是最常见的办法。

如果楼主你不会ajax,我再告诉你一个办法,请看代码:

// 按照楼主的源代码改的
var geolocation = new BMap.Geolocation();
geolocation.getCurrentPosition(function(r){
    if(this.getStatus() == BMAP_STATUS_SUCCESS){
        // 成功取到了位置信息
        
        // 把用户id,位置信息用js写入cookie
        
        // 然后....神奇的事情发生了
        document.write('<script src="AAAA.php" type="text/javascript"></script>');
    }
    else {
        alert('failed'+this.getStatus());
    }
},{enableHighAccuracy: true});

你在AAAA.php的脚本内,实现读取cookie,这时候服务端也拿到了用户id,及对应的cookie;
注意:AAAA.php(你可以换成其他名称或者是控制器方法URL) 要和页面URL在同一个域名下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题