【发布时间】:2013-03-14 04:40:15
【问题描述】:
我正在尝试使用 PHP 变量的参数调用 JavaScript 函数。 我尝试了两种方法。
-
在 PHP 中使用 echo 中的脚本标签调用 JavaScript 函数 即
<?php echo '<script>initialize('.$lat.','.$lang.','.$zom.');</script>'; ?> -
将 PHP 变量值分配给 JavaScript 变量
var lat=""; var lang=""; var zoom=""; 警报(纬度+语言+缩放); 初始化(纬度,语言,缩放); 脚本>
在第一种情况下,当我从页面源交叉检查时调用了函数,但传递的参数未定义。 并且在第二种情况下,值已成功保存在 JavaScript 变量中,通过 alert() 进行检查,但未调用函数。
这是整个代码:
<!DOCTYPE html>
<html>
<head>
<script src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false">
</script>
<?php
if( isset($_POST['lat']) && isset($_POST['lang']) && isset($_POST['zoom']) && isset($_POST['city'])):
$lat=$_POST['lat'];
$lang=$_POST['lang'];
$zoom=$_POST['zoom'];
$city=$_POST['city'];
$zom=(int)$zoom;
var_dump($lang);
var_dump($lat);
//var_dump($zoom);
var_dump($zom);
//echo '<script>initialize('.$lat.','.$lang.','.$zom.');</script>';
endif;
?>
<script>
var lat="<?php echo $lat; ?>";
var lang="<?php echo $lang; ?>";
var zoom="<?php echo $zoom; ?>";
alert(lat+lang+zoom);
initialize(lat,lang,zoom);
</script>
<script>
function initialize(a,b,zom){
if (!a || !b ||!zom){
alert('came on not' +a+b +zom);
// var centerLoc=new google.maps.LatLng( 33.61701054652337,73.37824736488983);
zoom=16;
}
else
{
alert('came');
var zoom =parseInt(zom);
var centerLoc=new google.maps.LatLng(a,b);
}
var mapProp = {
center:centerLoc,
zoom:zoom,
//mapTypeId:google.maps.MapTypeId.ROADMAP
mapTypeId:google.maps.MapTypeId.SATELLITE
};
var map=new google.maps.Map(document.getElementById("googleMap") ,mapProp);
marker=new google.maps.Marker({
position:centerLoc,
title:'Click to zoom'
});
google.maps.event.addListener(marker,'click',function() {
map.setZoom(map.getZoom()+1);
map.setCenter(marker.getPosition());
});
marker.setMap(map);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body style= "background-color:gainsboro;">
<form method="POST" action="myPage.php" >
Enter latitude: <input type ="text" name="lat" id="lat" / ><br/>
Enter longitude: <input type ="text" name="lang" id="lang"/ ><br/>
Enter City Name: <input type="text" name="city" id="city"/><br/>
Enter Zoom level: <input type ="text" name="zoom" id="zoom"/ ><br/>
<input type="button" value ="Perview" onclick=" initialize(
document.getElementById('lat').value,
document.getElementById('lang').value,
document.getElementById('zoom').value)"/>
<input type="Submit" value="Save" />
</form>
<center><div id="googleMap" style="width:1000px;height:500px;"></div></center>
</body>
</html>
【问题讨论】:
-
检查 JavaScript 控制台是否有错误。
-
当你执行
echo '<script>initialize('.$lat.','.$lang.','.$zom.');</script>';时,你在生成的页面的源代码中得到了什么? -
尝试调试你的 js - 例如,使用 Chrome 的控制台
-
你调用这个函数,还是它只是“存在”?您可能需要在
body onload、something onclick等中调用它。 -
var lang="="<?php echo $lang; ?>";似乎有点奇怪。 PHP处理后是什么样子的?
标签: php javascript function google-maps google-maps-api-3