[英]Using a variable inside another
我正在嘗試通過PHP將值傳遞給Javascript函數,但是它不起作用,該值似乎沒有通過。 當我用靜態文本替換變量時,它可以正常工作。
我正在通過這樣的PHP文件調用該函數。
<?php
if (!empty($data['geocode'])) {
echo '<body onload="initializeGM(\'' . $data['geocode'] . '\');">';
} else {
echo '<body>';
}
?>
$data['geocode']
包含lat
和lng
作為字符串。
這是Javascript代碼。
function initializeGM(geocode) {
var myOptions = {
zoom: 8,
center: new google.maps.LatLng(geocode),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
我已經在JS函數中添加了一個alert(geocode)
進行測試,並且工作正常。
如何做到這一點,以便可以將geocode
變量傳入並起作用?
假設我已經正確理解了您的問題,則geocode
是一個PHP變量,您希望將其傳遞給JavaScript函數調用。 在這種情況下,您需要echo
顯PHP變量的值:
new google.maps.LatLng(<?php echo($geocode); ?>);
但是 ,請注意, LatLng
構造函數需要2個類型為Number的參數(和一個可選的布爾參數),並且您僅嘗試傳遞一個參數。 盡管我可能完全誤解了您的意圖。
編輯 (請參閱評論)
我沒有注意到您將geocode
作為參數傳遞給initializeGM
函數。 如果您實際上試圖將PHP變量傳遞給該函數,則需要修改對JavaScript函數的調用以使用PHP變量:
initializeGM(<?php echo($geocode); ?>);
上面的“然而”段落仍然適用。 您的代碼很可能會引發錯誤,因為LatLng
構造函數中undefined
lng
。
再次修改 (請參見修改后的問題)
乍一看,您所看到的將導致沿這些方向的變化(正如您所說的geocode
包含一個字符串):
<body onload="initializeGM('somelat,somelng');">
從理論上講,這沒有錯(將一個字符串傳遞給initializeGM
),但是問題在於該函數需要兩個Number類型的參數,而不是String類型的一個參數:
<body onload="initializeGM(100, 200);"> <!--Use real lat-lng values here!-->
這將需要更改JavaScript函數:
function initializeGM(lat, lng) { //2 arguments
var myOptions = {
zoom: 8,
center: new google.maps.LatLng(lat, lng), //Pass 2 arguments to constructor
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
google.maps.LatLng
構造函數至少接受兩個參數lat:number
和lng:number
。 您只通過了一個。
假設$data['geocode']
看起來像1.234,5.678
,嘗試這個...
將您的JS函數更改為
function initializeGM(lat, lng) { var myOptions = { zoom: 8, center: new google.maps.LatLng(lat, lng), mapTypeId: google.maps.MapTypeId.ROADMAP } var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); }
更改為
<?php if (!empty($data['geocode'])) : $coords = explode(',', $data['geocode']); ?> <body onload="initializeGM(<?php printf('%.15f, %.15f', $coords[0], $coords[1]) ?>)"> <?php else : ?> <body> <?php endif ?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.