[英]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.