我正在尝试在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>
答案 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>