2016-08-03 15 views
0

Ich versuche eine App zu erstellen, die Benutzerdaten (lat, lon) aus der Database (mysql) bekommt und dann ihre Position auf google map zeigt. HierZeige JSON Antwort (lat, lon) in Google Karte

ist das Codebeispiel:

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; 

?> 

Einige Dinge, die ich versucht haben, das Problem auf dem Code zu finden, aber nicht

  1. In get_location.php auf echo $ j; zeigt mir die richtige Antwort

  2. Vor dieser Zeile var data = JSON.parse (data.responseText); Warnung ("abc") funktioniert, aber nicht danach, so denke ich, das Problem liegt in dieser Zeile, aber weiß nicht, warum es passiert, Irgendeine Idee?

+0

In der 'get_location.php' Sie müssen' json_encode' verwenden, anstatt ' json_decode' und Sie müssen es auch echo, so dass der Ajax-Callback etwas zu arbeiten hat. – RamRaider

+0

Ohh Wie kann ich das verpassen? BTW danke für die Antwort :) Es funktioniert –

Antwort

0

Ich denke, das Hauptproblem der Missbrauch von json_decode in einer Situation, wo Sie das Gegenteil erfordern, 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

Problem wurde von Ram Raider in obigen Kommentar gelöst. –