将用户Lat / Lng发送到php代码

时间:2016-08-22 22:53:30

标签: php jquery html5

所以这就是我的困境,我希望能够使用用户的当前位置来填充索引页面上的表格,其中包含用户附近的位置。 最好的方法是什么? 以下是我用来收集用户的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}}

2 个答案:

答案 0 :(得分:1)

首先,您应将Lat,long存储到隐藏的输入中以隐藏用户

  1. 您可以使用Ajax将Lat + Long发送到PHP文件
  2. 当你得到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))
    }
    
    1. 您可以使用NodeJS服务器通过套接字发送latlong 您的搜索关键字: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']从服务器捕获它;