Connection.php-Datei, in der der Datenbankverbindungscode mit json gespeichert wurde:

<?php
    $username = "root";
    $password = "";
    $database = "roadmap";
    $url = "localhost";

    $con = mysql_connect($url, $username , $password);
    if (!$con) {
       die('Could not connect:' . mysql_error());
    }

    mysql_select_db($database, $con) ;
    $data = array();
    // query your DataBase here looking for a match to $input
    $query = mysql_query("SELECT * FROM students");
    while ($row = mysql_fetch_assoc($query)) {
       $json = array();
       $json['Id'] = $row['Id'];
       $json['Lon'] = $row['Lon'];
       $json['Lat'] = $row['Lat'];
       $data[] = $json;
    }
    header("Content-type: application/json");
    echo json_encode($data);
    mysql_close($con);
?>

In der separaten Datei index.php:

$.getJSON("connection.php", function(data) {
    addMarker( data[0].Lon,data[0].Lat ,data[0].desc);
    addMarker(-0.13264,51.50918 , );
    addMarker( -0.12498,51.50807 , );
    center = bounds.getCenterLonLat();
    map.setCenter(center, map.getZoomForExtent(bounds) - 1);
    zoom = map.getZoom();   
});

Dies zieht derzeit die JSON-Daten durch und ich muss sie für jede einzelne Zuweisung eines Teils aus der Datenbank verwenden, z. B. Daten [0] .lon erhält den Längengradeintrag für den ersten Datensatz mit in Datenbank.

Da werde ich mit einigen Einträgen arbeiten. Ich möchte das JSON-Array durchlaufen und dann alle Datensätze wie folgt ausgeben:

addMarker( RECORD 1 );

addMarker( RECORD 2 );

addMarker( RECORD 3 );

Kann mir jemand dabei helfen.

0
zara 8 Okt. 2012 im 12:26

3 Antworten

Beste Antwort

Benutze so etwas

$.each(data, function(i,row){
  addMarker( row['Lon'],row['Lat'] ,row['desc'])
})
1
j0k 8 Okt. 2012 im 08:36

Sie können eine for-Schleife verwenden:

$.getJSON("connection.php", function(data) {
  for(var i = 0; i < data.length; ++i) {
    addMarker(data[i].Lon, data[i].Lat, data[i].desc);
  }
  addMarker(-0.13264,51.50918 , );
  addMarker( -0.12498,51.50807 , );
  center = bounds.getCenterLonLat();
  map.setCenter(center, map.getZoomForExtent(bounds) - 1);
  zoom = map.getZoom();
}); 

Oder verwenden Sie wie die anderen Antworten die Funktion jQuery each.

0
Stuart Wakefield 8 Okt. 2012 im 08:36

Sie können $ .each loop verwenden, um über Ihren json zu iterieren. Versuchen Sie dies

Versuche dies

function(data){

    $.each(data, function(i){

        console.log('Record ' + i + ' : Longitude - ' + data[i].Lon + '  . Latitude  - ' + data[i].Lat + '. Description - ' + data[i].desc    )
    });
}

Überprüfen Sie FIDDLE

0
Sushanth -- 8 Okt. 2012 im 08:38