如何将 php 放入 JavaScript 中?

IT技术 php javascript
2021-02-10 10:25:27

我试过(但它不工作):

<?php  
  $htmlString= 'testing';
?>
<html>
  <body>
    <script type="text/javascript">  
      var htmlString=<?php echo $htmlString; ?>;
      alert(htmlString);
    </script>
  </body>
</html>

这是我为此目的使用教程

6个回答

试试这个:

<?php $htmlString= 'testing'; ?>
<html>
  <body>
    <script type="text/javascript">  
      // notice the quotes around the ?php tag         
      var htmlString="<?php echo $htmlString; ?>";
      alert(htmlString);
    </script>
  </body>
</html>

当您遇到这样的问题时,一个好主意是检查您的浏览器是否有 JavaScript 错误。不同的浏览器有不同的显示方式,但请寻找 javascript 控制台或类似的东西。此外,请检查浏览器查看的页面来源。

有时初学者会对字符串中的引号感到困惑:在 PHP 部分,您分配'testing'$htmlString. 这将一个字符串值放入该变量中,但该值中没有引号:它们仅用于解释器,所以他知道:哦,现在是字符串文字了

@inf3rno,哦...我刚看到你自己的答案。嗯...你有一点...除了,我认为对于级别的 OP 是 ATM,它有点 TMI。他似乎还没有考虑到一些基本的东西。
2021-03-18 10:25:27
这仍然有效并且安全吗?
2021-03-20 10:25:27
@inf3rno,如果错了,我们应该修复它!不能让一个错误的答案在这里......究竟是什么错误?(我假设你反对最后一段......嗯......向初学者解释这个有点困难 - 你有更好的看法吗?)
2021-03-24 10:25:27
当 php 变量包含 ' 标记时出错。像“人”
2021-04-09 10:25:27
这很容易解释,如果你想将字符串注入 javascript 代码,你必须为 javascript 转义它...... json_encode 就是这样做的......它与 sql 注入预防非常相似,在那里你必须为 sql 转义.. .
2021-04-10 10:25:27

您的字符串周围缺少引号:

...
var htmlString="<?php echo $htmlString; ?>";
...
$htmlString = "\"" 嗯,我想知道为什么那个 JavaScript 突然停止工作了......
2021-04-14 10:25:27

如果您使用 .js 文件,上面的所有解释都不起作用。如果您想将 PHP 解析为 .js 文件,您必须通过使用以下命令修改 .js 文件所在的 .htaccess 在您的服务器上进行更改:

<FilesMatch "\.(js)$">
    AddHandler application/x-httpd-php .js
</FilesMatch>

然后,包含以下代码的文件 test.js 文件将在客户端执行 .JS 并在服务器端解析 PHP:

<html>
<head>
<script>
function myFunction(){
   alert("Hello World!");
}
</script>
</head>
<body>
<button onclick="myFunction()"><?php echo "My button";?></button>
</body>
</html>

将服务器端数据放入生成的 javascript 代码的唯一正确方法:

<?php $jsString= 'testing'; ?>
<html>
  <body>
    <script type="text/javascript">      
      var jsStringFromPhp=<?php echo json_encode($jsString); ?>;
      alert(jsStringFromPhp);
    </script>
  </body>
</html>

使用简单的引号,您的变量内容不会针对 HTML 和 javascript 进行转义,因此它很容易受到 XSS 攻击...

出于类似的原因,我建议使用document.createTextNode()而不是设置innerHTML. 办公室 它更慢,但更安全......

这取决于您想发送什么样的数据。html unicode 字符与 javascript unicode 字符不同,因此您必须对其进行转换...另一种使用 REST 服务和适当的客户端库来处理请求的方法,例如 extjs 或主干。顺便提一句。在这种情况下你也必须使用 json_encode ......
2021-04-04 10:25:27
从技术上讲,这不是唯一的方法,但肯定是一种安全的方法。也就是说,一开始不应该用 PHP 构建 JavaScript。
2021-04-10 10:25:27

你需要在 javascript 中的字符串周围加上引号

var htmlString="<?php echo $htmlString; ?>";