'意外的令牌:标识符错误'-从php代码向javascript函数分配php json数组类型变量值

时间:2018-09-19 09:34:31

标签: javascript php

我正在尝试在php中调用JavaScript函数,并将php json数组类型变量的值作为参数传递给它。我从SO论坛上的搜索中发现,执行此操作的一种方法是将变量值echo / print_r返回到php代码中js脚本内的js var。我正在尝试通过这种方式进行操作,但是这样做时我无法从'unexpected token: identifier error '中恢复。

我正在尝试找出语法错误的原因,但不能。我尝试了各种发现的方法。通过在脚本中的php部分周围加上单引号/双引号,因为某些地方没有引号,所以我找到了带引号的解决方案。

这是我的代码。如果有人看到它并指出导致此错误的原因,这将非常有帮助。

    <script>
    dspChrt(WData);
    .......
    </script>
<HTML>
     <?php

          $WData;
          require("Connection.php");

                try {
                    $stmt = $conn->prepare("Select humidity, temperature FROM weatherdata");
                            $stmt->execute();

                    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
                    foreach($stmt->fetchAll() as $k=>$v) {       
                    $WData = json_encode($v);
                    //print_r($WData);
                    }?>

                    <script>
                    var Wdata = <?php print_r($WData);?>
                    dspChrt(WData);
                    consol.log(WData);
                    </script>

                    <?php
                        }
                    catch(PDOException $e) {
                    echo "Error: " . $e->getMessage();
                    }

         ?>
</HTML>

2 个答案:

答案 0 :(得分:0)

您应该将PHP编码为JSON,以将其传递给JavaScript。

您应该先准备数据。

<?php
    $data = array('xxx'=>'yyy');
?>
<script>
    var data = <?php echo json_encode($data); ?>;
    //then in js, use the data
</script>

对于您的代码,有太多错误需要修复:

  <HTML>
    <?php
    require("Connection.php");
    $stmt = $conn->prepare("Select humidity, temperature FROM weatherdata");
    $stmt->execute();

    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $WData = array();
    foreach($stmt->fetchAll() as $k=>$v) {       
      $WData[] = $v;
    }
    ?>

    <script>
      var WData = <?php echo json_encode($WData);?>;
      console.log(WData);
      dspChrt(WData);
    </script>
  </HTML>

答案 1 :(得分:0)

首先,您需要使用JSON.parse解析JSON。

还需要更改php和javascript代码的顺序。

如果要将php数据分配给Javascript变量,请先使用php检索数据并在其下面编写JavaScript代码。

例如:

<?php

$v = array(1,2,3);
$data = json_encode($v);

?>

<script>

 var WData = JSON.parse('<?php echo $data; ?>');
 dspChrt(WData);

</script>