我有以下代码:
<HTML>
<?php
if(isset($_GET['adjust'])){
$adjust = true;
}
//More variabele declaring
?>
<HEAD>
<script type="text/javascript">
var adjust = "<?php Print($adjust); ?>";
//More variable 'transports'
</script>
</HEAD>
<!-- rest of the file -->
我想稍微清理一下,因为我有很多变量。这会影响文件的可读性和概览性。
我想过把它全部放到一个外部的 JavaScript 文件中,但似乎行不通。
<HTML>
<?php
if(isset($_GET['adjust'])){
$adjust = true;
}
//More variabele declaring
?>
<HEAD>
<script type="text/javascript" src="externalJS.js"></script>
</HEAD>
<!-- rest of the file -->
使用外部JS.js:
var adjust = "<?php Print($adjust); ?>";
//More variable 'transports'
根据 this question ,也在 stackoverflow 上询问过,这是不可能的。
既然回答了上述问题,有没有办法利用过去几年的知识来做到这一点? 是否有其他方法可以提高可读性?
P.S.:我认为值得一提的是我从 url、txt 文件和 cookie 中获取了我的 php 变量。
最佳答案
当我不得不将一些变量放入 javascript 中时,我使用了将所有这些项目加载到一个对象(或数组)中并将该数据输出到 javascript 中的对象/数组文字的方法.
例如:
<?php
$js_object = new stdClass();
$js_object->foo = 'some value';
$js_object->bar = 'some other value';
?>
<script type="text/javacript">;
var php_values = <?php echo json_encode($js_object); ?>;
console.log(php_values.foo);
console.log(php_values.bar);
</script>
这做了一些事情。
- 如果传递的变量需要更改,您的 JS 输出部分根本不需要更改。任何你想在 JS 中访问的东西只需要在对象通过
json_encode()
输出到浏览器之前加载到 - 它将所有 PHP 提供的值放在 javascript 中一个整洁的对象/数组中,以便可以访问它们。
- 您可以通过这种方式轻松传递复杂的数据结构(嵌套数组、包含数组的对象、对象数组等)
- 如果需要,您可以在 javascript 中扩展对象以提供方法等来处理数据。
$js_object
中
我还想说,您可能需要考虑一下是否要以这种方式传递 cookie 数据。 Cookie 数据无论如何都可用于 javascript,因此如果您需要更改值等,您可能希望直接使用该数据。
关于javascript - 如何提高可读性? (将 php vars 传递给外部文件中的 javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19869082/