2016-08-03 25 views
0

我试图构建一个应用程序,它从数据库(mysql)获取用户数据(lat,lon),然后在Google地图上显示它们的位置。在谷歌地图中显示JSON响应

下面是代码示例:

function initMap() { 
     var mapDiv = document.getElementById('map'); 
     var map = new google.maps.Map(mapDiv, { 
     center: {lat: 33.7167, lng: 73.0667}, 
     zoom: 11 
    }); 

    makeRequest('get_locations.php', function(data) { 
     //alert("abc"); 
     var data = JSON.parse(data.responseText); 
     //window.alert(data); 

     for (var i = 0; i < data.length; i++) { 
      //display(data[i]); 
      displayLocation(data[i]); 
     } 
    }); 
} 


function makeRequest(url, callback) { 
    var request; 
    if (window.XMLHttpRequest) { 
     request = new XMLHttpRequest(); // IE7+, Firefox, Chrome, Opera, Safari 
    } else { 
     request = new ActiveXObject("Microsoft.XMLHTTP"); // IE6, IE5 
    } 
    request.onreadystatechange = function() { 
     if (request.readyState == 4 && request.status == 200) { 
      callback(request); 
     } 
    } 
    request.open("GET", url, true); 
    request.send(); 
} 

get_locations.php

<?php 
    include('connection.php'); 
    $l= array(); 
    $result = mysqli_query($con,"SELECT * FROM users"); 
    while ($row = mysqli_fetch_assoc($result)) { 
     $l[] = $row; 
    } 
    $j = json_decode($l, true); 
    //echo $j; 

?> 

有些事情,我试图找到代码中的问题,但未能

  1. 在echo $ j上的get_location.php;它显示我正确的回应

  2. 在此行之前var data = JSON.parse(data.responseText);警报(“abc”)的作品,但不是在此之后,所以我认为这个问题居住在这条线,但不知道为什么发生, 任何想法?

+0

在'get_location.php'你需要使用'json_encode'而不是' json_decode',你也需要回显它,所以ajax回调函数可以使用。 – RamRaider

+0

哦,我怎么会想念这个?顺便说一句,谢谢你的回应:)它的工作 –

回答

0

我认为主要的问题是在您需要相反的情况json_decode滥用,json_encode

function initMap() { 
     var mapDiv = document.getElementById('map'); 
     var map = new google.maps.Map(mapDiv, { 
     center: {lat: 33.7167, lng: 73.0667}, 
     zoom: 11 
    }); 

    makeRequest('get_locations.php', function(data) { 
     if(data){ 
      var data = JSON.parse(data); 
      for(var n in data){ 
       var obj=data[ n ]; 

       console.log('%o', obj); 
       displayLocation.call(this,obj); 
      } 
     } 
    }); 
} 


function makeRequest(url, callback) { 
    var request; 
     request = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); 

    request.onreadystatechange = function() { 
     if (request.readyState == 4 && request.status == 200) { 
      callback(request.responseText); 
     } 
    } 
    request.open("GET", url, true); 
    request.send(); 
} 




<?php 

    include('connection.php'); 
    $l= array(); 

    $result = mysqli_query($con, "SELECT * FROM users"); 
    while ($row = mysqli_fetch_assoc($result)) { 
     $l[] = $row; 
    } 

    /* encode array as a json object */ 
    $json = json_encode($l); 

    /* send the correct content-type header */ 
    header('Content-Type: application/json'); 

    /* send the data */ 
    exit($json); 

?> 
+0

问题已被Ram Raider在上述评论中解决。 –