[英]Passing PHP Array into Javascript
我在PHP中有一個類似下面的數組
array(
(int) 0 => array(
'id' => '1',
'name' => 'Mink7',
'about' => 'Creative Design agency',
'logo' => null,
'lat' => '13.004870000000',
'lng' => '77.576686084656'
),
(int) 1 => array(
'id' => '2',
'name' => 'Bakasura',
'about' => 'Live 2 Eat',
'logo' => null,
'lat' => '13.005643569006',
'lng' => '77.577485382942'
)
)
我做了什么。 我在標題中加載了函數,並在body標簽中寫入了以下內容。
<script type="text/javascript">
$(document).ready(function(){
var startups = <?php echo json_encode($startups); ?>;
$.each(startups, function(key, val) {
markMe(val.lat, val.lng, val.name, val.description, val.logo);
});
});
</script>
我收到以下錯誤
markMe未定義
markMe(val.lat,val.lng,val.name,val.description,val.logo);
附加到HEAD的Javascript文件。
// JavaScript Document
$(document).ready(function () {
var map = new GMaps({
div: '#map',
lat: 13.00487,
lng: 77.576729,
zoom: 13,
});
/*
GMaps.geolocate({
success: function (position) {
map.setCenter(position.coords.latitude, position.coords.longitude);
},
error: function (error) {
alert('Geolocation failed: ' + error.message);
},
not_supported: function () {
alert("Your browser does not support geolocation");
},
always: function () {
//alert("Done!");
}
});
*/
map.addControl({
position: 'top_right',
text: 'Geolocate',
style: {
margin: '5px',
padding: '1px 6px',
border: 'solid 1px #717B87',
background: '#fff'
},
events: {
click: function () {
GMaps.geolocate({
success: function (position) {
map.setCenter(position.coords.latitude, position.coords.longitude);
},
error: function (error) {
alert('Geolocation failed: ' + error.message);
},
not_supported: function () {
alert("Your browser does not support geolocation");
}
});
}
}
});
map.addMarker({
lat: 13.00487,
lng: 77.576729,
title: 'Lima',
icon: "http://i.imgur.com/3YJ8z.png",
infoWindow: {
content: '<p>HTML Content</p>'
}
});
function markMe(lat, lng, name, description, logo){
map.addMarker({
lat: lat,
lng: lng,
title: name,
icon: "http://i.imgur.com/3YJ8z.png",
infoWindow: {
content: description
}
});
}
});
在PHP中查找json_encode ,並在JavaScript中使用JSON.parse
(如果需要廣泛的瀏覽器支持,則使用jQuery.parseJSON
類的庫)
- 更新后
代替功能markMe(lat,lng,name,description,logo){
do:markMe = function(lat,lng,name,description,logo){
那是因為函數中聲明的函數在該函數之外是不可用的
在回答id之前,我想指出我正在做一些假設。
如果是這種情況,您可以將數組引用放入javascript函數中,它將起作用。
我猜測你的數據映射,我建議一個更好的方法是通過php構建整個函數,並通過方法調用將其輸出到屏幕,使代碼更容易閱讀/理解
然而,猜測你的映射並測試代碼是否在創建方法調用之前工作,我會用這樣的東西作為第一次嘗試。
<script type="text/javascript">
<?php
foreach($array as $point)
{
?>
{
map.addMarker({
lat: <?php print $point["lat"]; ?>,
lng: <?php print $point["lng"]; ?>,
title: <?php print $point["name"]; ?>,
icon: <?php if(!is_null($point["logo"]){ print $point["logo"];} ?>,
infoWindow: {
content: <?php print $point["about"]; ?>
}
});
<?php } ?>
</script>
謝謝
尼古拉斯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.