繁体   English   中英

如何为外部javascript文件设置变量?

[英]how to set a variable for external javascript file?

我试图弄清楚如何设置要在外部js文件中使用的session_id变量。 这就是我所拥有的。

php文件:

$output = '<script src="test.js">
     var session_id = '.$_SESSION['id'].'
</script>';
print $output;

js文件:

alert(session_id);

有了这个我得到一个错误,说没有定义session_id。 有没有办法传递此信息?

我知道我可以使用信息设置隐藏的输入,但是我认为有一种更好的方法。

哼,那:

$output = '<script type="text/javascript> var session_id = '.$_SESSION['id'].'</script><script type="text/javascript" src="test.js"></script>';
print $output;

如果要包含外部JS文件,则不能在脚本标记之间放置代码。 所以你要:

<script type="text/javascript">
    var session_id = <?php print $_SESSION['id']; ?>;
</script>
<script type="text/javascript" src="test.js"></script>

尽管您可以通过将会话ID设置为HTML中的隐藏表单字段,然后在test.js中使用DOM方法来查找它来解决这种混乱的情况。

如果您可以将session_id作为全局变量处理,那么将执行以下操作:

<script>
     var session_id = '<?php echo $_SESSION['id'];?>'
</script>
<script src="test.js"></script>

如果您想使变量仅对闭包等中的javascript文件可用,则可以通过PHP解析器发送js文件或为js文件使用参数,但是后者实际上不是很容易从javascript访问,请参阅我的问题关于这个

在中的内容<script>标记,如果没有找到JavaScript文件时,才会执行。 在未设置文件之前,在单独的<script>标记中设置变量:

<script>
     var session_id = '<?=$_SESSION['id']?>';
</script>
<script src="test.js">
</script>

另一个解决方案是让PHP提供如下脚本:

  • 准备一个具有所需变量定义的JS文件:
var value1 = '{value1}';
var value2 = '{value2}';

...
// script goes here
  • 使用PHP,读取文件并将{value1}{value2}标签替换为您的数据:

if ($_GET["script"])
{
 $data = array(
   "value1" => $_SESSION["id"],    # i.e.
   "value2" => $foo
 );

 $script = file_get_contents($script . ".js");

 foreach ($data as $key => $value)
 {
  $script = str_replace("{" . $key . "}", $value, $script);
 }

 header("Content-Type: text/javascript");
 echo $script;
 exit();
}
  • 然后,您可以像这样将PHP称为“解析器”:
<script type="text/javascript" src="?script=myscript"></script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM