0

json を使用してデータベース接続コードを格納した Connection.php ファイル:

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

別のファイル 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();   
});

これは現在jsonデータを取得しており、data[0].lonなどのデータベースからパーツを個別に割り当てるたびに使用する必要があり、データベース内の最初のレコードの経度エントリが取得されます。

私はかなりの数のエントリで作業する予定です。私はjson配列をループしてから、すべてのレコードを次のように出力したい:

addMarker( RECORD 1 );

addMarker( RECORD 2 );

addMarker( RECORD 3 );

誰でもこれで私を助けることができますか?

4

3 に答える 3

1

このようなものを使用してください

$.each(data, function(i,row){
  addMarker( row['Lon'],row['Lat'] ,row['desc'])
})
于 2012-10-08T08:31:48.610 に答える
0

$ .eachループを使用して、jsonを反復処理できます。これを試してください

これを試して

function(data){

    $.each(data, function(i){

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

FIDDLEを確認してください

于 2012-10-08T08:33:17.410 に答える
0

for ループを使用できます。

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

または、他の回答と同様に jQueryeach関数を使用します。

于 2012-10-08T08:36:05.270 に答える