我有我的文件hotlaps.php
,我在其中创建了一个javascript脚本:
echo "<body onload=\"func1(".$array_1.",".$array_2.",".$array_3.");\">";
在我的文件hotlaps.js
中,我有这个功能:
function func1(array1, array2, array3){
arr1 = array1;
arr2 = array2;
arr3 = array3;
alert(piloto_array[0]);
start();
}
但我的变量arr1
,arr2
和arr3
未定义。为什么呢?
答案 0 :(得分:1)
试试这个:
<body onload='func1(".json_encode($array_1).",".json_encode($array_2).",".json_encode($array_3).");'>";
答案 1 :(得分:1)
如果你想在你的javascript变量中使用你的php数组,那么你需要使用json_encode
但要小心它对数组使用双引号"
,这会打破你的在其他嵌套双引号内嵌套双引号的示例。使用单引号来避免这种情况。
我把事情做得更好一些,这样你就可以更容易地看到发生的事情了。
<?php
$array_1 = array ('one','two','three');
$array_2 = array ('four','five','six');
$array_3 = array ('seven','eight','nine');
echo "
<body onload='
func1(
".json_encode($array_1).",
".json_encode($array_2).",
".json_encode($array_3)."
);
'/>
";
?>
<script>
function func1(array1, array2, array3){
arr1 = array1;
arr2 = array2;
arr3 = array3;
alert(arr1);
}
</script>
此输出结果:
<body onload='
func1(
["one","two","three"],
["four","five","six"],
["seven","eight","nine"]
);
'/>
<script>
function func1(array1, array2, array3){
arr1 = array1;
arr2 = array2;
arr3 = array3;
alert(arr1); // just print the first one, you get the idea
}
</script>
答案 2 :(得分:1)
为了简化语法并避免乱用引号(恕我直言),您可以像这样初始化PHP和JS中的变量:
<?php
$array_1 = json_encode([1,2,3]);
$array_2 = json_encode([4,5,6]);
$array_3 = json_encode([7,8,9]);
?>
<script type="text/javascript">
var array_1 = <?php echo $array_1; ?>,
array_2 = <?php echo $array_2; ?>,
array_3 = <?php echo $array_3; ?>;
</script>
<body onload="func1(array_1,array_2,array_3)">
<script type="text/javascript">
function func1(array1, array2, array3) {
console.log(array1);
}
</script>
答案 3 :(得分:-1)
您需要将php中的变量打印到您的html代码中
<body onload=\"func1("<?php echo $array_1; ?>","<?php echo $array_2; ?>","<?php echo $array_3; ?>");\">";