动态获取 Javascript 变量中的数据库值


Getting database values in Javascript variable dynamically

我研究过这个主题很多次,但我找不到我问题的正确答案。让我解释一下。

我正在使用 Google 地图 API 创建一个应用程序,我希望根据我的数据库值在地图上显示多个位置。我的javascript中有一个名为Locations的对象,我在其中存储变量"name","lat"和"lon"(纬度,纵向)。

var Locations =
[{  
    name: 'test',
    lat: 52.351753, 
    lon: 5.002035 
  }, 
  {     
    name: 'test2',
    lat: 52.390839, 
    lon: 4.908722
  }];

这部分是我存储位置的地方。虽然这是有效的,但它是硬编码的。所以,我想把我所有的mysql数据库值从数据库中动态地放到我的javascript变量中。我用PHP浏览了数据库条目:

    foreach ($query as $post)
    {
        ?> <h1><?php echo $post['naam'] ?></h1> 
               <p><?php echo $post['plaats'] ?></p> 
               <p><?php echo $post['categorie'] ?></p> 
               <?php
    }

现在我尝试获取所有这些值并将它们放入我的 javascript 变量中,但没有任何成功。

var bedrijven = <?php echo json_encode($post); ?>;

当我控制台时.log"bedrijven"我只得到最后一个条目,但我希望存储每一行。有人可以帮助我吗?如果它有效,那将非常酷。

我希望我解释得足够好。

谢谢!

$post是迭代变量,因此它一次只包含数组的一个元素。如果需要整个阵列,请分配:

var bedrijven = <?php echo json_encode($query); ?>;

尝试:

.PHP:

function getMarkers(){
    $response = array();
    foreach ($query as $post) {
    $response[] = array(
        'name' => $post['naam'],
        'lat' => $post['plaats'],
        'lng' => $post['categorie'],
    );
}
echo json_encode($response);
}

然后 JS:

function addMarkers(json){
    var title =json[index]["naam"];
    var lat =json[index]["plaats"];
    var lng =json[index]["categorie"];
    marker = new google.maps.Marker({
        position: new google.maps.LatLng (lat, lng),
        map: YOUR_MAP
    });
}
jQuery.getJSON("URL OF PAGE",{
    format: "json",
    dataType: 'json',
    contentType: "application/json; charset=utf-8"},
    function(json){addMarkers(json);
});

更好的是,使用 json 发送信息并使用 jQuery 的 getJSON 检索它,这可能需要一些调整。但是我已经创造了你所说的。如果需要任何进一步的帮助,请大喊大叫。

您可能需要对此进行

一些研究才能对其进行配置。

祝你好运!

http://us1.php.net/json_encode 上的例子应该会有所帮助。看起来您的$post应该是一个关联数组:

$post[] = ("name"=>"test","lat"=>52.351753, "lon"=> 5.002035); ?>
var bedrijven = <?php echo json_encode($post); ?>;

输出:

var bedrijven = [{"name":"test","lat":52.351753,"lon":5.002035}];