如何将参数从PHP文件传递给Javascript

时间:2016-06-13 22:25:24

标签: javascript php

我有我的文件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();
}

但我的变量arr1arr2arr3未定义。为什么呢?

4 个答案:

答案 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; ?>");\">";