2016-03-14 1 views
-1

Я хочу получить последнее местоположение нескольких шин из таблицы (MAX (ID)) через каждые 5 секунд.получить mysql resultset в ответе ajax

1) Как отправить результаты с ответа ajax?

2) Как заполнить маркеры [] из ответа ajax?

Что я сделал это:

<script> 

function autoUpdate(){ 
    $.ajax({ 
     type: 'GET', 
     url: 'ajax/getlatlong.php', 
     sync: true, 
     success: function(data){ 

     var json = $.parseJSON(data); 
     var bus_id=json.bus_id; 
     var latitude =json.latitude; 
     var longitude=json.longitude; 

     alert(latitude); 
     alert(bus_id); 

    document.getElementById("lat").value = latitude; 
    document.getElementById("longi").value = longitude; 
     } 
     }); 
     // Call the autoUpdate() function every 5 seconds 
setTimeout(autoUpdate, 5000); 

} 

autoUpdate(); 


    // Multiple Markers 
    var markers = [ 
    ['Manly Beach', 28.64321, 77.11578], 
    ['Manly Beach', 27.64321, 76.21578], 
    ['Manly Beach', 26.64321, 77.31578], 
    ['Manly Beach', 25.64321, 77.87178], 
    ['Manly Beach', 24.64321, 77.71578], 
    ]; 

</script> 

getlatlong.php

$con=mysql_connect($host, $user, $password) or die('database error'.mysql_error()); 
    $db_con=mysql_select_db($db,$con); 

    $q=mysql_query("SELECT max(id) FROM `tbl_map` where agency="1" group by bus_id")or die(mysql_error()); 
    while($res=mysql_fetch_array $q)){ 
    $id=$res['id']; 
    $q1=mysql_query("select latitude,longitude,bus_id from tbl_map where id='$id'"); 
    $res=mysql_fetch_array($q1); 
    echo json_encode($res); 

    } 
+0

Для того, чтобы использовать данные, возвращаемые $ .ajax вызов, вы можете сделать так: 'var res = $ .ajax ({...}); var data = $ .parseJSON (res.responseText); ' – Yuri

ответ

3

В функции успеха вы просто должны работать над ответом:

$j.each(data, function (i, val){ 
     var lat = val.latitude; 
     var lng = val.longitude; 
     printMarker(lat, lng); 
    }); 

Для всех маркеров, определить массив, чтобы сохранить ссылку каждого созданного маркера:

var markers = []; //Global Marker Array 

Тогда просто вызовите функцию в $ .each(), где вы создаете маркер, и нажимаете его на глобальный массив:

function printMarker(lat, lng){ 
     var marker = new google.maps.Marker({ 
      position: {lat: lat, lng: lng}, 
      icon: icon, 
      map: map 
     }); 
     markers.push(marker); 
    } 

Если это не то, что вы ожидали, вы должны уточнить свой вопрос.

EDIT: Вы используете устаревший способ взаимодействия с базой данных, в моем примере, предоставленной I'm с помощью PDO (http://php.net/manual/en/book.pdo.php):

try { 
     $stmt = $this->dbCon->prepare("select latitude,longitude,bus_id from tbl_map where id = :id"); 
     $stmt->bindParam(':id', $id); 

     if($stmt->execute()) { 
      if ($stmt->rowCount() > 0) { 
       while($row=$stmt->fetch(PDO::FETCH_ASSOC)){ 
        $response[] = $row; 
       } 
      }else{ 
       $response = null; 
      } 
      echo json_encode($response); 
     } 
    }catch (PDOException $e) { 
     header("HTTP/1.0 500 Internal Server Error"); 
     die("Error: " . $e->getMessage()); 
    } 
0

Ваш код Javasript идет здесь

<script> 

function autoUpdate(){ 
    $.ajax({ 
     type: 'GET', 
     url: 'ajax/getlatlong.php', 
     sync: true, 
     success: function(data){ 

     var resultSet = $.parseJSON(data).resultSet; // Your result set 
     /*var json = $.parseJSON(data); 

     var bus_id=json.bus_id; 
     var latitude =json.latitude; 
     var longitude=json.longitude; 

     alert(latitude); 
     alert(bus_id); 

    document.getElementById("lat").value = latitude; 
    document.getElementById("longi").value = longitude;*/ 
     } 
     }); 
     // Call the autoUpdate() function every 5 seconds 
setTimeout(autoUpdate, 5000); 

} 

autoUpdate(); 


    // Multiple Markers 
    var markers = [ 
    ['Manly Beach', 28.64321, 77.11578], 
    ['Manly Beach', 27.64321, 76.21578], 
    ['Manly Beach', 26.64321, 77.31578], 
    ['Manly Beach', 25.64321, 77.87178], 
    ['Manly Beach', 24.64321, 77.71578], 
    ]; 

</script> 

РНР код страницы выглядит следующим образом

$con=mysql_connect($host, $user, $password) or die('database error'.mysql_error()); 

$db_con=mysql_select_db($db,$con); 

$q=mysql_query("SELECT max(id) FROM `tbl_map` where agency="1" group by bus_id")or die(mysql_error()); 
$arr=array(); 
while($res=mysql_fetch_array $q)){ 
    $id=$res['id']; 
    $q1=mysql_query("select latitude,longitude,bus_id from tbl_map where id='$id'"); 
    $res=mysql_fetch_array($q1); 
    $arr['resultSet'][]=$res; 
} 
echo json_encode($arr);