数据没有传递给php文件

时间:2017-11-23 11:31:21

标签: javascript php ajax geolocation

通过AJAX将用户地理定位发送到php文件时遇到问题。

这里是代码:

                    if (navigator.geolocation) {
                    navigator.geolocation.getCurrentPosition(function(position) {
                            var pos = {
                                lat: position.coords.latitude,
                                lng: position.coords.longitude
                            };

                            infoWindow.setPosition(pos);
                            infoWindow.setContent('You are here');
                            map.setCenter(pos);
                            $.ajax({
                                    type: 'POST',
                                    data: pos,
                                    url: '/template-userslocation.php'
                                    });

                            },
                            function() {
                                handleLocationError(true, infoWindow, map.getCenter());
                            });                     

                   } else {
                           // Browser doesn't support Geolocation
                           handleLocationError(false, infoWindow, map.getCenter());
                   };

尝试过不同的方法来编写数据:     data: {pos},     data:({pos})
    data: {lat: position.coords.latitude, lng: position.coords.longitude},

这是我在template-userslocation.php中遇到的错误:

  

注意:第7行的/home/.../template-userslocation.php中的未定义索引:pos

解决:

问题在于我一直在使用Wordpress,它有自己的方式处理javascript:

here the info

1 个答案:

答案 0 :(得分:0)

pos是变量的名称,从PHP它不知道,它只会看到$_POST['lat']$_POST['lng']

所以使用:

$.ajax({
    type: 'POST',
    data: {'pos': pos},
    url: '/wp-content/themes/atripby/template-userslocation.php'
});

然后从PHP访问:

$lat = isset($_POST['pos']['lat']) ? $_POST['pos']['lat'] : null;
$lng = isset($_POST['pos']['lng']) ? $_POST['pos']['lng'] : null;