在mysql之后,有很多困难要将地理位置数据发送到php for store。搜索和获得支持已经取得了很多成果,但仍未看到页面中用户的坐标。
这里的代码。
1.来自template-maps.php
的代码:
var pos;
var posZae = function(pos){
return {
coords: {
latitude: pos.coords.latitude,
longitude: pos.coords.longitude,
accuracy: pos.coords.accuracy.toFixed()
},
timestamp: pos.timestamp
}
};
var netPOS;
var infoWindow = new google.maps.InfoWindow({map: map});
// Try HTML5 geolocation.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
infoWindow.setPosition(pos);
infoWindow.setContent('You are here');
map.setCenter(pos);
var netPOS = JSON.stringify(posZae(position));
$.ajax({
type: 'POST',
data: { 'pos' : pos},
url: '/wp-content/themes/honolulu/template-userslocation.php'
});
},
function() {
handleLocationError(true, infoWindow, map.getCenter());
});
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
};
它应该将数据发送到我有此代码的template-userslocation.php
:
<?php
/**
* Template Name: template-userslocation
*/
$lat = isset($_POST['pos']['lat']) ? $_POST['pos']['lat'] : null;
$lng = isset($_POST['pos']['lng']) ? $_POST['pos']['lng'] : null;
?>
我没有错误,但如果我对页面收费则没有数据。页面和控制台中没有任何内容。
解决:
问题在于它是在Wordpress中制作的,Wordpress有自己的方式来处理AJAX。
答案 0 :(得分:1)
编辑2
我不知道任何WordPress插件或PHP。 lat / lng是否出现在网络/服务器上?无论如何试试这个: -
var posZae = function(pos){
return {
lat: pos.coords.latitude,
lng: pos.coords.longitude,
}
};
var infoWindow = new google.maps.InfoWindow({map: map});
// Try HTML5 geolocation.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = posZae(position);
var netPOS = JSON.stringify(pos);
infoWindow.setPosition(pos);
infoWindow.setContent('You are here');
map.setCenter(pos);
$.ajax({
type: 'POST',
data: { 'pos' : netPos},
url: '/wp-content/themes/honolulu/template-userslocation.php'
});
},
function() {
handleLocationError(true, infoWindow, map.getCenter());
});
} else {
// Browser doesn't support Geolocation
handleLocationError(false, infoWindow, map.getCenter());
};
编辑1
好的,这会对你有任何熟悉的声音吗?
// Try HTML5 geolocation.
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
pos = {
lat: position.coords.latitude,
lng: position.coords.longitude
};
infoWindow.setPosition(pos);
infoWindow.setContent('You are here');
map.setCenter(pos);
var netPOS = JSON.stringify(pos4Net(position));
$.ajax({
type: 'POST',
data: { 'pos' : netPOS},
url: '/wp-content/themes/atripby/template-userslocation.php'
});
原始邮件:
不确定你在哪里&#34; pos&#34;被宣布。也许使用VAR进行本地化可以帮助实例化它?
我对位置对象的性质有同样/类似的问题,并在尝试通过网络传输之前调用以下内容: -
var pos4Net =
function(pos)
{
return {
coords: {
latitude: pos.coords.latitude,
longitude: pos.coords.longitude,
accuracy: pos.coords.accuracy.toFixed()
},
timestamp: pos.timestamp
}
}
所以var yourPos = pos4Net(position)
答案 1 :(得分:0)
没有数据。页面和控制台中没有任何内容。
您的PHP代码将POSTed数据复制到几个变量中。就是这样。
它没有输出任何东西。它没有将变量用于任何事情。
它只是将数据存储在变量中,然后退出(这会破坏变量,因为它们仅在程序执行的生命周期内存在)。
您需要对数据执行某些操作。
你可以直接输出它:
<?php header("Content-Type: text/plain"); echo $lat; echo $lng; ?>
......这不是非常有用,但可以作为演示。
您的JavaScript对响应没有任何作用。
(如上所述,回复并不包含任何内容,因此您需要先修复PHP。)
您的JavaScript中没有成功处理程序,因此当浏览器获得响应时,您的代码不会对其执行任何操作。这就是浏览器中没有显示任何内容的原因。
url: '/wp-content/themes/atripby/template-userslocation.php'
}).done(function(data) { console.log(data); });
...会在浏览器的开发者工具控制台中显示结果。
答案 2 :(得分:0)
首先安装你的lat。和郎。检查你是否得到任何结果然后在ajax中使用以下代码
data: { 'lang' : coordinates , 'lat': coordinate},
然后在目标文件中使用$ _POST ['lant']和$ _POST ['lang']
答案 3 :(得分:-1)
ajax函数正在发送pos
这是一个对象,但你在php脚本中使用数组表示法来访问lat / lng。
也许如果你做了
$.ajax({
type: 'POST',
data: { lat:pos.lat, lng:pos.lng },
url: '/wp-content/themes/atripby/template-userslocation.php'
});
然后,您可以在PHP中尝试
$lat=!empty( $_POST['lat'] ) ? $_POST['lat'] : null;
$lng=!empty( $_POST['lng'] ) ? $_POST['lng'] : null;