2013-02-11 53 views
-4

如何使用从PHP文件中的变量JavaScript文件如何使用从PHP文件中的变量JavaScript文件

在PHP文件

我分配$ phpVariable到jsVariable与此代码:

<script> 
var jsVariable = <?php echo $phpVariable; ?>; 
</script> 

在JavaScript文件:我测试jsVariable与此代码:

<script> 
alert(jsVariable); 
</script> 

但输出 “:未定义”

感谢 莫伊

+0

查看浏览器控制台。如果变量的值是一个字符串,那么您在分配中缺少引号。在屏幕右侧列出了很多很多类似的问题。 – Pointy 2013-02-11 21:15:45

+2

您是否在同一个PHP/html文件中包含这些脚本标记?另外什么是$ phpVariable的价值?如果它的字符串需要适当引用。最简单的方法就是使用'echo json_encode($ phpVariable)' – prodigitalson 2013-02-11 21:17:12

回答

1

如果这样的变量是一个字符串,你应该把它包在引号:

<script> 
var jsVariable = "<?php echo $phpVariable; ?>"; 
</script> 

EDIT但你永远不应该这样做。你最好把它注射的DOM元素的data-*属性,或无论是从一个JSON配置文件/字符串你会被解析,如取,

<script type="application/json" id="json-config"> 

<?php echo json_encode($someObject); ?> 

</script> 

然后:

var config = $.parseJSON($('#json-config').html()) 
+1

这是一个XSS漏洞。 – SLaks 2013-02-11 21:16:22

+1

只有在将它写入JS之前,不编码'$ phpVariable',这本身不是XSS漏洞。 – migg 2013-02-11 21:17:15

+0

XSS仍然是这段代码的有效关注点......所以请务必遵循[这些指导方针](https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#RULE_.233 _-_ JavaScript_Escape_Before_Inserting_Untrusted_Data_into_JavaScript_Data_Values )在将它加密到JS之前编码'$ phpVariable'(如果该值来自用户输入)! – migg 2013-02-11 21:20:17

0
<?php 
print "<script>"; 
print "var jsVariable = $phpVariable"; 
print "</script>"; 
?> 
+0

如果值是一个字符串,这将比原来的效果更好。 – Pointy 2013-02-11 21:17:22

+1

为了达到所有PHP安装的兼容性目的,您应该使用'<?php'作为开始标记。您使用的开始标记被称为短标记,并且可能不允许在所有PHP安装中使用,因为它基于'php.ini'文件中的设置。请确保您编写干净的兼容代码。 – War10ck 2013-02-11 21:18:59

+0

您在打印常量值时正在降低服务器的性能,所以更好的方法是使用moonwave99的示例 – Epsil0neR 2013-02-11 21:19:08

相关问题