我试图找出如何将session_id变量设置为在外部js文件中使用。这就是我所拥有的。
php文件:
$output = '<script src="test.js">
var session_id = '.$_SESSION['id'].'
</script>';
print $output;
js file:
alert(session_id);
有了这个,我收到一条错误,说没有定义session_id。有没有办法传递这个信息?
我知道我可以用信息设置一个隐藏的输入,但我想有更好的方法。
答案 0 :(得分:2)
$output = '<script type="text/javascript> var session_id = '.$_SESSION['id'].'</script><script type="text/javascript" src="test.js"></script>';
print $output;
答案 1 :(得分:2)
如果您包含外部JS文件,则无法在脚本标记之间放置代码。所以你想要:
<script type="text/javascript">
var session_id = <?php print $_SESSION['id']; ?>;
</script>
<script type="text/javascript" src="test.js"></script>
虽然您可以通过在HTML中将会话ID设置为隐藏的表单字段然后在test.js中使用DOM方法来查找它来解决这个问题。
答案 2 :(得分:1)
如果您可以将session_id作为全局变量处理,那么以下内容将执行此操作:
<script>
var session_id = '<?php echo $_SESSION['id'];?>'
</script>
<script src="test.js"></script>
如果你想让变量只对闭包等中的javascript文件可用,你可以通过PHP解析器发送js文件或者使用js文件的参数,但后者不是很容易从javascript中访问,见my question about that。
答案 3 :(得分:0)
<script>
标记内的内容仅在找不到 的JavaScript文件时执行。在没有文件集之前,将变量设置在单独的<script>
标记中:
<script>
var session_id = '<?=$_SESSION['id']?>';
</script>
<script src="test.js">
</script>
答案 4 :(得分:-1)
另一种解决方案是让PHP提供如下脚本:
var value1 = '{value1}';
var value2 = '{value2}';
...
// script goes here
{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();
}
<script type="text/javascript" src="?script=myscript"></script>