所以这就是我的困境,我希望能够使用用户的当前位置来填充索引页面上的表格,其中包含用户附近的位置。 最好的方法是什么? 以下是我用来收集用户的lat / lng值的代码:
<input type="hidden" id="latitude">
<input type="hidden" id="longitude">
现在我拥有了用户的当前位置
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.12/css/jquery.dataTables.css">
<script>
$(document).ready(function(){
var dataTable = $('#searchTable').dataTable();
$("#searchbox").keyup(function() {
dataTable.fnFilter(this.value);
});
});
</script>
echo'<table id="searchTable" class="display">
<thead>
<tr>
<th>Latitude</th>
<th>Longitude</th>
</tr>
</thead>
<tbody>
';
(data to display from tables.php)
echo'</tbody>
</table>
';
但是如何将这些位置放入PHP变量并将它们传递给数据库查询,这样我就可以在用户登陆时在索引页面上显示它们。
<?php
require_once("connect.php");
$lat = isset($_POST['lat']) ? $_POST['lat'] : null;
$lng = isset($_POST['lng']) ? $_POST['lng'] : null;
if($lat && $lng){
$locations = array();
$stmt = "SELECT * FROM location LIMIT 500"; //Query data from table
$stmt = $conn->prepare($stmt);
$stmt->execute();
if($stmt->rowCount() > 0){
$result = $stmt->fetchAll();
foreach($result as $row){
echo'<tr>
<td>';
$locations['Latitude'][] = $row;
echo'</td>
<td>';
$locations['Longitude'][] = $row;
echo'</td>
</tr>';
}
}
return json_encode($locations);
}
?>
(我正在使用数据表来显示位置) 我应该通过AJAX将值发送到具有查询的单独PHP页面,然后再返回主页面吗?那么一旦用户登陆主页面,查询就会随用户位置而更新? 任何帮助是极大的赞赏。我已经搜索了几天的解决方案,并且没有多少运气。 感谢。
这是我的tables.php页面(Stil试图找出如何正确地将数据发送回索引页面)
{{1}}
答案 0 :(得分:1)
首先,您应将Lat,long存储到隐藏的输入中以隐藏用户
当你得到lat,用户很长时,简单地调用ajax
$.getJSON(GEOCODING).done(function(location) {
$('#latitude').html(position.coords.latitude);
$('#longitude').html(position.coords.longitude);
$.ajax({
url: 'yourfile.php',
method: 'POST', // or GET if you want
dataType: 'json',
data: {
lat: $('#latitude').val(),
long: $('#longitude').val()
},
success: function(result) {
// process your response data
}
});
});
您的PHP文件:
<?php
$lat = isset($_POST['lat']) ? $_POST['lat'] : null;
$long = isset($_POST['long']) ? $_POST['long'] : null;
if($lat && $long) {
// process your data query to database etc...
// remember return response for client, the line below just a expamle
return json_encode(array("check"=>true, "data_after_process"=>$data))
}
nodejs socket.io
socket.emit
send data from client to nodejs by using socket.io
答案 1 :(得分:0)
为什么你不使用 position.coords.longitude instectof $('#latitude')。val()
编译时代码出错:
function success(position) {
$.getJSON(GEOCODING).done(function(location) {
//Your ajax code logic.
}
function error(err) {
console.log(err)
}
1:错误:您没有); 关闭 GEO 的 .done 功能。 2:错误:在您定义错误功能
之前,您没有任何} 来关闭成功功能使用标签
继续检查您的代码我已经为你解决了这个问题,希望你能用更多的解决办法来解决问题:)
function success(position) {
var GEOCODING = 'https://maps.googleapis.com/maps/api/geocode/json?latlng=' + position.coords.latitude + '%2C' + position.coords.longitude + '&language=en';
$.getJSON(GEOCODING).done(function(location) {
$('#latitude').html(position.coords.latitude);
$('#longitude').html(position.coords.longitude);
$.ajax({
url:'table.php',
method: 'POST',
dataType: 'json',
data:{
lat: position.coords.latitude,
lng: position.coords.longitude
},
success: function(data){
console.log(data);
}
});
});
}
function error(err) {
console.log(err)
}
完成:只需使用POST ['lat']和POST ['lng']从服务器捕获它;