我有一个php数组,我想将其作为参数传递给onClick的javascript函数。 但是,该函数位于另一个文件中。我试着解释一下。
文件 map.php :
<head>
<script type="text/javascript" src="../public/js/map.js"></script>
<script type='text/javascript'>
var js_array = [<?php echo '"'.implode('","', $php_array).'"' ?>];
//alert(js_array[0]); //this alert works
</script>
</head>
//code...
<form method="post" enctype="multipart/form-data" action="">
<input type="submit" name="submit" value="Post" onClick="createMap(js_array); return false;"/>
</form>
档案 map.js 。我尝试通过警报打印阵列,但什么也没做:
for(i=0; i<js_array.length; i++) {
alert(js_array[i]);
}
function createMap(js_array) {
//code...
}
怎么了?非常感谢你
修改 感谢您的回复,但仍然无法正常工作。我修改了这样的代码:
文件map.php :
<head>
<script type='text/javascript'>
var js_array = JSON.parse(<?php echo "json_encode($addresses)"; ?>);
//alert(js_array[0]); //this alert works
</script>
<script type="text/javascript" src="../public/js/map.js"></script>
</head>
//code...
<form method="post" enctype="multipart/form-data" action="">
<input type="submit" name="submit" value="Post" onClick="createMap(js_array); return false;"/>
</form>
文件map.js :
for(i = 0; i < js_array.length; i++) {
alert(js_array[i]);
}
function createMap(js_array) {
//...
}
答案 0 :(得分:1)
我认为您遇到了问题,因为在初始化map.js
的脚本块之前加载并执行了js_array
文件。尝试切换脚本块。
绝对在PHP端使用json_encode
方法。这就是它的设计目标。
仔细查看代码后,我会看到您所包含的所有"
标记,并且认为它最终成为有效的JSON,但您的代码会更容易如果您只使用json_encode
和JSON.parse
,则维护并让其他人帮助调试。
您的ACTUAL问题只是script
阻止的顺序。
我测试了这段代码,它有效。
<head>
<?php $addresses = array("test","test"); ?>
<script type='text/javascript'>
var js_array = <?php echo json_encode($addresses); ?>;
//alert(js_array[0]); //this alert works
</script>
<script type="text/javascript" src="map.js"></script>
</head>
您还忘记了原始代码中的;
...