外部js文件中的php数组

时间:2013-06-04 17:52:49

标签: php javascript external-js

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

非常感谢你的帮助!!

2 个答案:

答案 0 :(得分:2)

嗯,你的PHP脚本中有“dinaledly”汇编的JavaScript。最简单的解决方案是忘记翻译变量。相反,使用自定义标头将所有JS代码(包括PHP部分)放在一个伪装成JS文件的PHP文件中。所以,你的“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的处理方式:它可能取决于您在主脚本中的上下文,因此可能需要进行额外的调整。

答案 1 :(得分:1)

简而言之,您无法将PHP变量直接传递给外部JS文件,而无需在PHP中生成文件,然后发送自定义标头将文件视为JavaScript(编辑:请参阅 Marcovecchio < / strong>如果这听起来像是一个可能的解决方案)......一个快速的解决方案是将内联变量传递给全局,然后在外部文件中使用它们。这将允许您的大部分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>