Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP变量传递到外部JavaScript(或jQuery)文件的最有效方法_Javascript_Php_Jquery_Json - Fatal编程技术网

将PHP变量传递到外部JavaScript(或jQuery)文件的最有效方法

将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

我读了几篇关于这个问题的帖子,发现这是最简单的解决方案,下面是我的代码:

js内置PHP代码

<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
    中放入愚蠢的东西,它就不会损坏,但如果您在任何
    PHP
    脚本中放入愚蠢的东西,您就可以杀死自己的网站。你是站长@Daniel,这意味着json_encode()被破坏并输出非法的json,因为没有合法的json是非法的JavaScript。由于
    json_encode()
    确实产生了字符串,我不确定这是一个什么问题,比有Firebug的用户还多。@rsp对此不是100%确定,但感谢您的澄清;)Niet,Yatko,你能在下面测试一下吗?除非我修改字符串文字,否则不会发出任何警报。也许这只是我的运气不好,但我在不同的浏览器上测试了它,甚至在两个不同的在线PHP“Fiddler”上测试了它。非常感谢<代码>var myvar=;预警(myvar)
    是正确的,它确实打破了代码:
    var jsTitle=-@Pang,你能解释一下你对这个项目的建议吗。非常感谢。非常感谢您的时间和详细的例子!由于大多数人不知道这种可能性,我希望它也能帮助其他搜索者将PHP变量传递到外部.js文件中。我认为