通过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:
答案 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;