【发布时间】:2012-02-12 04:45:00
【问题描述】:
我有一个 JavaScript 文件,它有一个硬编码的 BASEURL 变量,然后这个值被文件中的其他函数使用。 我希望动态设置这个 url 值,这样我就不需要为不同的安装手动更改它。是否可以将 PHP 变量值插入到 JavaScript 文件中?
【问题讨论】:
标签: php javascript
我有一个 JavaScript 文件,它有一个硬编码的 BASEURL 变量,然后这个值被文件中的其他函数使用。 我希望动态设置这个 url 值,这样我就不需要为不同的安装手动更改它。是否可以将 PHP 变量值插入到 JavaScript 文件中?
【问题讨论】:
标签: php javascript
与其尝试将 PHP 混合到 javascript 文件中,不如在 HTML 模板中执行以下操作:
<head>
<script>
var BASEURL = "<?php echo base_url(); ?>";
</script>
<script src="/path/to/my_script1.js"></script>
<script src="/path/to/my_script2.js"></script>
</head>
这会设置变量并允许所有嵌入式脚本访问它。 base_url() 将替换为您使用 PHP 获取基本 url 的任何方法。
【讨论】:
假设你有一个由 PHP 动态编写的 JS 文件;文件1.php
<?php
header('Content-Type: application/javascript');
$var = $_GET['var1'];
echo "jsvar = ".$var.";";
?>
file1.php?var1=10 的客户端源代码将是
jsvar=10;
【讨论】:
有几种方法:
通过 AJAX 加载 baseurl,但这可能会很慢,也许你需要早一点。
让javascript文件通过php解析器运行。然后你可以使用内联回声。
最方便最简单的方法是在页面的 html/php 输出中创建一个<script>var baseurl = '...';</script>。
【讨论】:
您需要将文件设为 php 文件,而不是 js 文件。从那里你可以在文件中包含任何 PHP 标记来发挥你的动态魔法。使这一切正常工作的关键在于标题,您需要像这样设置:
<?php
Header("content-type: application/x-javascript");
echo 'var js_var = ' . $php_var;
?>
alert (js_var);
这种技术也可以用于 CSS 文件。
【讨论】:
application/x-javascript? application/javascript 已成为标准 年。
Heredoc 今天为我工作:
<?php
echo <<<ANYNAME
<script LANGUAGE="JavaScript" type="text/javascript">
<!--
// code ...
var myLatlng = new google.maps.LatLng($lat, $lon);
// code cont. ...
//-->
</script>
ANYNAME;
?>
http://php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
【讨论】: