我研究过这个主题很多次,但我找不到我问题的正确答案。让我解释一下。
我正在使用 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}];