繁体   English   中英

在另一个内部使用变量

[英]Using a variable inside another

我正在尝试通过PHP将值传递给Javascript函数,但是它不起作用,该值似乎没有通过。 当我用静态文本替换变量时,它可以正常工作。

我正在通过这样的PHP文件调用该函数。

<?php
if (!empty($data['geocode'])) {
    echo '<body onload="initializeGM(\'' . $data['geocode'] . '\');">';
} else {
    echo '<body>';
}
?>

$data['geocode']包含latlng作为字符串。

这是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:numberlng:number 您只通过了一个。

假设$data['geocode']看起来像1.234,5.678 ,尝试这个...

  1. 将您的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); } 
  2. 更改为

     <?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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM