我需要将变量php的值传递给javascript,但我不能。尝试多种形式,但不起作用。使用以下版本而不是失败的原因。Apache 2.2.25 和 PHP 5.2.17(我现在需要使用这些版本)。示例中应接收变量的值为"kml/Aechmea_magdalenae.kml"
$anio = $row['kml_map'];
<script>
function initialize() {
var mexico = new google.maps.LatLng(20.6568241,-103.3984801);
var mapOptions = {
zoom: 11,
mapTypeId: google.maps.MapTypeId.TERRAIN,
center: mexico
}
var url2 = <?php echo json_encode($anio) ?>;
var url1 = 'http://www.cnf.gob.mx:8090/snif/especies_forestales/';
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var ctaLayer = new google.maps.KmlLayer({url: url1+url2});
ctaLayer.setMap(map);}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
正如您在此处看到的,回显json_encoded
url 字符串将转义该 url 中的正斜杠。
那么解决方案要么是:
var url = '<?php echo $anio; ?>';
确保 $anio
的值不包含任何单引号,或者(如果您运行的是 PHP 5.4 或更高版本),请使用以下命令:
var url = <?php echo json_encode($anio, JSON_UNESCAPED_SLASHES); ?>;
请注意缺少引号(json_encode
将为您添加引号),以及使用JSON_UNESCAPED_SLASHES
常量。 查看手册以获取更多常量
演示/PoC 在这里
看这一行:
var url2 = <?php echo json_encode($anio) ?>;
如果你打算json_encode(我认为是另一种方式),你应该使用引号,有些像
var url2 = "<?php echo json_encode($anio) ?>";