将PHP变量传递到外部JavaScript(或jQuery)文件的最有效方法
我读了几篇关于这个问题的帖子,发现这是最简单的解决方案,下面是我的代码: js内置PHP代码将PHP变量传递到外部JavaScript(或jQuery)文件的最有效方法,javascript,php,jquery,json,Javascript,Php,Jquery,Json,我读了几篇关于这个问题的帖子,发现这是最简单的解决方案,下面是我的代码: js内置PHP代码 <script> <!--// var jsBaseurl = <?php echo json_encode(BASE_URL."/"); ?>; var jsTitle = <?php echo json_encode($h1_title); ?>; var jsSubtl = <?php echo json
<script>
<!--//
var jsBaseurl = <?php echo json_encode(BASE_URL."/"); ?>;
var jsTitle = <?php echo json_encode($h1_title); ?>;
var jsSubtl = <?php echo json_encode($h2_title);?>;
//-->
</script>
<script src="external.js"></script>
它工作正常,我的问题是关于和的以下评论:
警告:这可能会杀死你的网站。例如:
<?php $myVarValue = '<!--<script>'; ?>
有关详细信息,请参阅。解决方案:使用
转义<和>(需要PHP 5.3.0)。-
另一个缺点是会影响初始页面加载时间-
我想知道彭日成评论的一个简单解决方案,以及这一切如何影响性能(页面加载时间)。非常感谢 很确定这不会破坏它。
json_encode
的全部要点是转储是安全的
可能会破坏它,但PHP默认情况下会以\/
的形式转义,因此您不必担心它。关于问题1:在
- 示例1
考虑一下这个简单的代码。< /P>
输出:<script> <?php $myVarValue = 'hello world'; ?> var myvar = <?php echo json_encode($myVarValue); ?>; alert(myvar); </script>
<script> var myvar = "hello world"; alert(myvar); </script>
<script> var myvar = "<\/script>"; alert(myvar); </script>
<script> var myvar = "<!--<script>"; alert(myvar); </script>
输出:<script> var myvar = "\u003C!--\u003Cscript\u003E"; alert(myvar); </script>
<script> var myvar = "hello world"; alert(myvar); </script>
<script> var myvar = "<\/script>"; alert(myvar); </script>
<script> var myvar = "<!--<script>"; alert(myvar); </script>
输出:<script> var myvar = "\u003C!--\u003Cscript\u003E"; alert(myvar); </script>
<script> var myvar = "hello world"; alert(myvar); </script>
<script> var myvar = "<\/script>"; alert(myvar); </script>
<script> var myvar = "<!--<script>"; alert(myvar); </script>
<script> var myvar = "\u003C!--\u003Cscript\u003E"; alert(myvar); </script>
var myvar=“\u003C!-\u003Cscript\u003E”; 预警(myvar);
它会提醒
是正确的,它确实打破了代码:如果输出为if json_encode()JavaScript中包含不太可能的非法字符。如果您在任何情况下使用
,并且只要您不在自己的PHP
中放入愚蠢的东西,它就不会损坏,但如果您在任何PHP
脚本中放入愚蠢的东西,您就可以杀死自己的网站。你是站长@Daniel,这意味着json_encode()被破坏并输出非法的json,因为没有合法的json是非法的JavaScript。由于PHP
确实产生了字符串,我不确定这是一个什么问题,比有Firebug的用户还多。@rsp对此不是100%确定,但感谢您的澄清;)Niet,Yatko,你能在下面测试一下吗?除非我修改字符串文字,否则不会发出任何警报。也许这只是我的运气不好,但我在不同的浏览器上测试了它,甚至在两个不同的在线PHP“Fiddler”上测试了它。非常感谢<代码>var myvar=;预警(myvar)json_encode()
var jsTitle=代码>-@Pang,你能解释一下你对这个项目的建议吗。非常感谢。非常感谢您的时间和详细的例子!由于大多数人不知道这种可能性,我希望它也能帮助其他搜索者将PHP变量传递到外部.js文件中。我认为