我在PHP中有一个变量,我需要在我的JavaScript代码中使用它的值.如何将我的变量从PHP变为JavaScript?
我的代码看起来像这样:
<?php
...
$val = $myService->getValue(); // Makes an API and database call
?>
Run Code Online (Sandbox Code Playgroud)
我有需要的JavaScript代码,val并且看起来如下:
<script>
myPlugin.start($val); // I tried this, but it didn't work
<?php myPlugin.start($val); ?> // This didn't work either
myPlugin.start(<?=$val?> // This works sometimes, but sometimes it fails
</script>
Run Code Online (Sandbox Code Playgroud) 当我看到解决http://escape.alf.nu第15级的答案时,我注意到这<!--<script>将导致DOM解析器中断.在以下HTML中,您将看不到字符串"Test"(在IE 11和Firefox&Chrome上测试):
<!DOCTYPE HTML>
<html>
<body>
<script>
var a = '<!--<script>';
</script>
<p>Test</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但是这两个脚本将显示"Test":
<!DOCTYPE HTML>
<html>
<body>
<script>
var a = '<!--';
</script>
<p>Test</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
和,
<!DOCTYPE HTML>
<html>
<body>
<script>
var a = '<script>';
</script>
<p>Test</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我不明白,为什么会这样?
我已经阅读了几篇关于这个问题的帖子,发现这是最简单的解决方案,这是我的代码:
PHP代码中的js
<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>
Run Code Online (Sandbox Code Playgroud)
和外部 .js
var siteURL=jsBaseurl;
alert(siteURL+jsTitle+jsSubtl)
Run Code Online (Sandbox Code Playgroud)
警告:这可能会导致您的网站被盗.例:
Run Code Online (Sandbox Code Playgroud)<?php $myVarValue = '<!--<script>'; ?>有关详情,请参阅此问题.解决方案:使用 JSON_HEX_TAG转义<和>(需要PHP 5.3.0).- 庞
另一个缺点是影响初始页面加载时间.- biplav
我想知道Pang评论的简单解决方案以及这些如何影响性能(页面加载时间).非常感谢!
我正在尝试创建一个网站,其中有人可以创建一个"项目",数据库将存储一个id和PHP生成该ID的网址.因此,下次当该人返回该网址时,它将记住该人的设置(变量).现在问题是在我的网站上javascript需要知道这些变量.
那么什么是最好的解决方案呢?传递超全球"GET"中的变量或者cookie?或者有更好的方法将这些变量传递给javascript吗?