【问题标题】:get mysql resultset in ajax response在ajax响应中获取mysql结果集
【发布时间】:2016-06-29 03:42:31
【问题描述】:

我想每 5 秒后从表 (MAX (ID)) 中获取多辆巴士的最后位置。

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);

    }

【问题讨论】:

  • 为了使用 $.ajax 调用返回的数据,你可以这样做:var res = $.ajax({...}); var data = $.parseJSON(res.responseText);

标签: javascript php ajax google-maps google-maps-markers


【解决方案1】:

在你的成功函数中,你只需要运行你的响应:

$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);
    }

如果这不是您所期望的,您必须澄清您的问题。

编辑: 您正在使用不推荐的方式与数据库进行通信,在我提供的示例中,我使用的是 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());
    }

【讨论】:

    【解决方案2】:

    你的 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>
    

    你的 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());
    $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);
    

    【讨论】:

      猜你喜欢
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 2014-03-13
      • 2015-02-13
      • 2011-10-05
      • 1970-01-01
      • 2018-04-24
      • 2015-09-09
      相关资源
      最近更新 更多