如何使用传递php变量的php代码调用javascript函数

如何使用传递php变量的php代码调用javascript函数,php,javascript,Php,Javascript,这是我的php代码: <?php $typeid = 65; $subledgerid = 'subledger'.$typeid; $loadledger = 'loadledgers'; ?> <script type="text/javascript">view_subledger('<?php echo $subledgerid;?>',<?php echo $typeid;?>,'<?php echo $lo

这是我的php代码:

<?php
  $typeid = 65;
  $subledgerid = 'subledger'.$typeid;
  $loadledger = 'loadledgers';
   ?>
   <script type="text/javascript">view_subledger('<?php echo $subledgerid;?>',<?php echo $typeid;?>,'<?php echo $loadledger;?>');</script>
我如何称呼它?

为什么脚本后面有
?应该是:

<?php
$typeid = 65;
$subledgerid = 'subledger'.$typeid;
$loadledger = 'loadledgers';
?>
<script type="text/javascript">view_subledger('<?php echo $subledgerid;?>',<?php echo $typeid;?>,'<?php echo $loadledger;?>');</script>

查看子分类账(“”,“”);

这是文件中的所有代码? 所有这些看起来都正常,并且只要$subdgerid、$typeid、$loadledger是正确的,就必须工作。 但是这条线呢

  <?php } ?>


它必须使脚本崩溃,以下是最安全的方法:

<?php

$typeid = 65;
$subledgerid = 'subledger'.$typeid;
$loadledger = 'loadledgers';

?>

<script type="text/javascript">
view_subledger.apply(window, <?php print json_encode(array(
  $typeid,
  $subledgerid,
  $loadledger
)); ?>);
</script>

查看子分类账。应用(窗口,);
这将生成以下代码:

<script type="text/javascript">
view_subledger.apply(window, [65,"subledger65","loadledgers"]);
</script>

查看子分类账。应用(窗口[65,“子分类账65”,“负荷分类账]);
json_encode()将确保正确转义变量,并使用.apply()方法将参数数组传递给JS函数

另一个建议的版本:

<?php
$typeid = 65;
$subledgerid = 'subledger'.$typeid;
$loadledger = 'loadledgers';
$param_str = implode(', ', array_map('json_encode', array(
  $typeid,
  $subledgerid,
  $loadledger
)));
?>

<script type="text/javascript">
view_subledger(<?php print $param_str; ?>);
</script>

查看子分类账();
生成以下内容:

<script type="text/javascript">
view_subledger(65, "subledger65", "loadledgers");
</script>

查看子分类账(65,“子分类账65”,“装载分类账”);

显示输出结果(页面源代码)。检查第7行:是否为
$subdgerid数字?您缺少前缀
子分类账
。不管怎样,请将使用PHP执行stuf时的HTML输出发布给我们。最后一行有一个不匹配的右大括号。文件中此代码上方是什么?@mikedklerk
$subgradgerid
是字母数字的…可能是复制粘贴问题可能是复制粘贴问题
窗口
应该是传递的
对象。我还建议将方法签名更改为
查看\u subgradger(数据)
在这种情况下。1)我认为问题的作者可以更改函数签名;2) 是的,json_encode()也可以用于任何非数组或非对象值。
<script type="text/javascript">
view_subledger(65, "subledger65", "loadledgers");
</script>