0

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

非常感谢你的帮助!!

4

2 回答 2

2

好吧,您的 PHP 脚本中已经“组装”了 JavaScript。最简单的解决方案是忘记翻译变量。相反,将所有 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 的处理方式:它可能取决于您在主脚本中的上下文,因此可能需要进行额外的调整。

于 2013-06-04T18:10:35.627 回答
1

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