繁体   English   中英

如何将 php 放入 JavaScript 中?

[英]How to put php inside JavaScript?

我试过(但它不工作):

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

这是我为此目的使用的教程

试试这个:

<?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 这将一个字符串值放入该变量中,但该值中没有引号:它们仅用于解释器,所以他知道:哦,现在是字符串文字

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

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

如果您使用 .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 办公室它更慢,但更安全......

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

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

正如其他人指出的那样,您需要引号,但我只想指出,有一种编写同一行代码的速记方法

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

看你可以省去“php echo”的东西,用一个简单的“=”代替它。

让我们看看这两个选项:

1.) 在 Javascript 中使用 PHP

<script>
    <?php $temp = 'hello';?>
    console.log('<?php echo $temp; ?>');
</script>

注意:文件名只能在 .php 中。

2.) 在 PHP 中使用 Javascript 变量

<script>
  var res = "success";
</script>
<?php
   echo "<script>document.writeln(res);</script>";
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM