如何将JavaScript放入JavaScript中?

Yos*_*sef 23 javascript php

我试过了(但它不起作用):

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

这是我用于此目的的教程:

Dar*_*mas 49

试试这个:

<?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>
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这很容易解释,如果你想将字符串注入javascript代码,你必须为javascript转义它... json_encode这样做...它非常类似于sql注入预防,在那里你必须为sql转义.. . (3认同)

Joh*_*nde 25

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

...
var htmlString="<?php echo $htmlString; ?>";
...
Run Code Online (Sandbox Code Playgroud)

  • `$htmlString = "\""` 嗯,我想知道为什么 JavaScript 突然停止工作...... (2认同)

JLa*_*oie 11

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

<FilesMatch "\.(js)$">
    AddHandler application/x-httpd-php .js
</FilesMatch>
Run Code Online (Sandbox Code Playgroud)

然后,包含以下代码的文件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>
Run Code Online (Sandbox Code Playgroud)


inf*_*rno 9

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

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

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

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

  • 从技术上讲,它不是*唯一*方式,但它肯定是一种安全的方式.也就是说,开始时不应该用PHP构建JavaScript. (2认同)

sec*_*ond 6

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

var htmlString="<?php echo $htmlString; ?>";
Run Code Online (Sandbox Code Playgroud)