2013-06-04 23 views
-1

我有这个更改请求将我的所有内联JavaScript移动到外部文件。我尝试了一个简单的复制粘贴到一个新的文件,但没有运气。我在以下行发生错误: var grp_list = <?php echo json_encode($arr_grp); ?>;url: "<?php echo $_SERVER['PHP_SELF']; ?>" 我至少有20个这样的事件。我如何在外部javascript中替换这些php变量? 我检查了很多论坛,但没有找到任何解决方案。在外部js文件中的php数组

非常感谢您的帮助!

回答

1

简而言之,您无法将PHP变量直接传递给外部JS文件,而无需在PHP中进行一些工作来生成文件,然后发送自定义标头将该文件视为JavaScript(编辑:请参阅文章Marcovecchio if这听起来像是一个可能的解决方案)......一个快速解决方案是将内联变量传递给全局变量,然后在外部文件中使用它们。这将允许你的JavaScript的大部分在外部文件中,但也允许你将你的变量从PHP传递给JS。

绝不是这是最好的解决方案,但它很可能是最容易的工作。

下面是一个例子:

<script type="text/javascript"> 
    var grp_list = <?php echo json_encode($arr_grp); ?>; 
    var url = "<?php echo $_SERVER['PHP_SELF']; ?>"; 
</script> 
<script type="text/javascript" src="external.js"></script> 
+0

AAH这个工作,我尝试过,但它没有回来工作,然后..反正..我很高兴它的工作现在..我希望这类型的变化会妨碍表现?我们是否必须在html头部以及body中放置此'? – user1165952

+0

你只需要确保你的外部文件来的变量后,它可以在''或'',不需要在两个 – naththedeveloper

+0

得到它..谢谢.. – user1165952

1

那么,你的JavaScript在你的PHP脚本中dinamically“汇编”。最简单的解决方案是忘记翻译变量。相反,将所有JS代码(包括PHP部分)都放在一个PHP文件中,该文件将使用自定义标题伪装成JS文件。所以,你的“的JavaScript”文件将是这样的:

<?php 
    // Send a custom header, so that it will be interpreted as a js file.  
    header("Content-Type: application/javascript"); 
?> 

JavaScript and PHP mixed code will go in here, with no modifications 

保存此文件作为类似“javascript.php”。然后,在你的主HTML或PHP文件,把它作为:

<script src="javascript.php"></script> 

这就是它! javascript.php文件将被解释为服务器中的PHP文件,并由浏览器作为JS检索。只支付Javascript文件中处理PHP类型的注意事项:它可能取决于主脚本中的上下文,因此可能需要进行其他调整。