繁体   English   中英

如何使用PHP和AJAX从MySQL创建JavaScript变量?

[英]How to create a javascript variable from MySQL using PHP and AJAX?

我不是本地AJAX和JavaScript程序员。 我试图将经度和纬度值从MySQL传递到javascript。 但是,我似乎在这里没有很多运气。 谁能告诉我我做错了什么?

我正在尝试创建一个脚本,该脚本允许我使用AJAX调用GPS_tracker php文件中的值来创建一个javascript变量。

GPS_tracker.php:

<?php
$servername = "localhost";
$username = "db_001";
$password = "12345678";
$dbname = "gpstable";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT rider_id, track_time, track_lng, track_lat FROM db_001.gpstable";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $lat = $row['track_lat'];
        $lng = $row['track_lng'];
        $gpsjson = json_encode(array($lat, $lng));
    }
} else {
    echo "0 results";
}

$conn->close();

?> 

Script.js:

$.ajax({
   url: 'gps_tracker.php',
   dataType: 'json'
}).done(
   function(gpsjson){
     var tag_name = gpsjson[0];
     var client_id = gpsjson[1];
   }
);

// Show the user's position on a Google map.
function showMap(lat, lon) {
    // Create a LatLng object with the GPS coordinates.
    var myLatLng = new google.maps.LatLng(lat, lon);

    // Create the Map Options
  var mapOptions = {
    zoom: 8,
    center: myLatLng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };

  // Generate the Map
  var map = new google.maps.Map(document.getElementById('map'), mapOptions);

  // Add a Marker to the Map
  var marker = new google.maps.Marker({
      position: myLatLng,
      map: map,
      title: 'Found you!'
  });
}

在php while循环中

$gpsjson = json_encode($row);

在javascript中解析json:

// in ajax response
var json = JSON.parse(gpsjson);
for(var i in json){
    alert(json[i].track_lat);
    alert(json[i].track_lng);
    // Show in console js text or errors 
    // Show console hit: CTRL+SHIFT+K
    console.log(json[i].track_lng);
}

在SELECT中添加(用于最后一条记录):

ORDER BY rider_id DESC LIMIT 1

请参阅此处通过JavaScript遍历/解析JSON对象

问候。

嗨,我认为您有2个问题:

  1. 您永远不会回显您的$ gpsjson;
  2. 如果您希望使用json,则else也会返回一个json编码msg。

另外,您应该发送一个关联数组,因此请尝试这样,让我知道它是如何工作的。 的PHP:

<?php
$servername = "localhost";
$username = "db_001";
$password = "12345678";
$dbname = "gpstable";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
//declare gps json here
$gpsjson = array();
$sql = "SELECT rider_id, track_time, track_lng, track_lat FROM db_001.gpstable";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
       //replace this 
       // $lat = $row['track_lat'];
       // $lng = $row['track_lng'];
       //$gpsjson = json_encode(array($lat, $lng));
       //for this
        $temp = array('lat'=>$row['track_lat'],'lng'=>$row['track_lng']);
        $gpsjson[] = $temp;
    }
    $gpsjson['response'] = 'ok';
    echo json_encode($gpsjson);
} else {
    echo json_encode(array('response'=>'error'));
}

$conn->close();

?>

Javascript:

 $.ajax({
      url: 'gps_tracker.php',
      type: 'GET',
      dataType: 'JSON'
    })
    .done(function(response) {
      console.log(response);
    });

希望能帮助到你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM