【问题标题】:How to use php variable inside a javascript code in a php code?如何在 php 代码中的 javascript 代码中使用 php 变量?
【发布时间】:2014-06-03 16:39:28
【问题描述】:

我该如何实现:

<?php
    echo "<script type='text/javascript'>";
    echo "document.getElementById('table_apps').innerHTML = json_encode($td_temp);";
    echo "</script>";
?>

$td_temp 有问题;

【问题讨论】:

  • 您是否设置了一些文本或其他内容的 $td_temp?你可以使用isset来检查
  • 是的,$td_temp 中有一个字符串可以绘制表格。我检查了它。没关系。
  • 也是因为 json_encode 是一个 php 函数,所以你需要从字符串中删除它,例如。 " .json_encode
  • 我添加了一个答案,我认为您会发现从信息/学习的角度来看很有用

标签: javascript php echo json


【解决方案1】:

您最好不要从 php 打印所有这些 html,而只打印一个变量。看起来更整洁

?>
<script type='text/javascript'>
document.getElementById('table_apps').innerHTML = <?php echo json_encode($td_temp); ?>;
</script>
<?php

【讨论】:

  • 您的语法错误,您将
  • @Justin Mitchell 你确定吗?检查一下,没有错
  • 谢谢,但我想要它在 php 中。
  • 您在我发布第一条评论时更新了。此外,您需要转义 json 并将其括在单引号中。
  • 不我不需要,检查一下,单引号自动添加 echo json_encode("sfhafdh");
【解决方案2】:

json_encode()是一个PHP函数

这样做

echo "document.getElementById('table_apps').innerHTML ='".json_encode($td_temp)."';";

【讨论】:

  • innerHTML 应该用单引号括起来,并转义 json 数据中的任何单引号。
  • 这正是我想要的。谢谢。
  • '".json_encode($td_temp)."' - 不需要单个 qoutes 是错误的
  • @海绵宝宝作者你最好用我的例子,相信我我知道我在说什么
  • @Alex,我不同意,如果您的回答最初是错误的并且仍然不完整。您不会将编码的 json 字符串封装在引号中,也不会对其进行转义。这被认为是正确的,因为它至少封装了至少 50% 正确的字符串。 Satish 提供了下一个最佳答案,因为他提供了两个使用 HTML 生成 PHP 的清晰示例。
【解决方案3】:
    <?php
        echo "<script type='text/javascript'>";
        echo "document.getElementById('table_apps').innerHTML = '".json_encode($td_temp)."';";
        echo "</script>";
    ?>
Try this.

【讨论】:

  • 谢谢,但它不起作用。错误:未捕获的语法错误:意外的令牌
  • 那是因为字符串没有被引用或转义
  • 而且因为json_encode还是封装在里面或者php字符串,会被literally解释
  • 但否决票确实会削弱开发人员的实力。 :(
【解决方案4】:

你可以试试这个没有回声

<?php

// some code

?>
       <script type='text/javascript'>
          document.getElementById('table_apps').innerHTML = '<?php echo json_encode($td_temp);?>';
       </script>

<?php

// some code

?>

更新 2:

<?php
    echo "<script type='text/javascript'>";
    echo "document.getElementById('table_apps').innerHTML = '".json_encode($td_temp)."';";
    echo "</script>";
?>

【讨论】:

  • 将json转义为单引号,这个答案是正确的
【解决方案5】:

以下几点非常重要:

  1. 将编码后的 json 字符串封装在引号中
  2. 转义任何编码的 json 字符串

为什么?

因为例如,如果您要提供一个名称数组,并且您有 O'Connell 或任何其他包含引号的名称,那么 innerHTML = '&lt;?php echo json_encode...' 会因为未转义的引号而中断。尽可能多地实践适当的封装和验证非常重要,因为它可以为您开发的任何应用程序提供未来证明,减少故障点,或者在尝试/捕获/异常的情况下,清楚地定义预期的故障点。

如果您要创建内容中包含分号的 json 对象会怎样?除非您将 json 内容用单引号括起来并正确转义,否则它可能会被逐字解释为当前命令的终止。因此,当您尝试输入 .innerHTML='{blah:"something O'Connel;...}' 时,您的 Javascript 会因为格式错误而引发错误,更不用说它无法在终止字符之前解释“Connel”。有些浏览器比其他浏览器更松散(IE 我在看你),并且会跳过验证或执行不符合标准的例程,或者在 IE6-8 的情况下执行错误的验证。

到目前为止,答案大多正确和错误,但到目前为止,所有答案都忽略了做一件事,转义引号:

<?php
    echo "<script type='text/javascript'>";
    echo "document.getElementById('table_apps').innerHTML = '" . addslashes(json_encode($td_temp)) . "';";
    echo "</script>";
?>

这将是正确的:

  1. 转义引号和
  2. 生成一个 json 编码的对象

【讨论】:

  • s"o/me_s\tr var a = "s\"o\/me\_s\\tr"; var b = '\"s\\\"o\\/me\\\_s\\\\tr\"'; 第二个是你的字符串。在萤火虫控制台检查它不工作
  • PHP 控制台:php &gt; $a = array("apples" =&gt; "o'connel"); php &gt; print json_encode($a); {"apples":"o'connel"} 注意它是如何不添加斜线的?您也可以选择addlashes 功能,我建议您阅读它。我怎么知道?嗯,这是因为我开发了许多使用 JSON 作为消息内容服务的 REST 应用程序和 ajax 驱动的 Web 应用程序。
猜你喜欢
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 1970-01-01
相关资源
最近更新 更多