如何将PHP会话变量传递给Javascript / jQuery函数?

时间:2011-12-23 16:09:47

标签: php javascript jquery session

我有一个加载会话变量的PHP页面:

$user_id = $_SESSION['USER_ID'];

以前,我在该页面中包含了我的Javascript / jQuery,并添加了<? echo $user_id; ?>来设置Javascript变量:

$(document).ready(function() {

     $(".button").click(function() {
        var user_id = <? echo $user_id; ?>
        var dataString = 'user_id=' + user_id;  
        $.ajax({  
          type: "POST",  
          url: "../add_user.php",  
          data: dataString,  
        });  
        return false
     });


});

但是,我想将我的Javascript移动到一个单独的页面并从我的PHP页面调用脚本:

<script src="add_user.js" type="text/javascript"></script>

如果我这样做,我就不能再使用<? echo $user_id; ?>了,那么将我的PHP变量传递给Javascript / jQuery函数的最佳方法是什么?

4 个答案:

答案 0 :(得分:9)

您可以将您的网络服务器配置为将.js文件视为PHP脚本,这样您就可以从.js文件中执行PHP代码。

但是,如果这是不可接受的,您可以随时执行以下操作:

<script type="text/javascript">var user_id = <?php echo json_encode($user_id) ?>;</script>
<script type="text/javascript" src="add_user.js"></script>

在PHP脚本级别定义变量,然后像往常一样包含外部.js。

如果$ user_id总是数字,那么json_encode()位是过度的,但我已经养成了在我动态生成JS代码的任何地方使用它的习惯。使用json_encode可以保证您插入一个语法正确的JS片段。

答案 1 :(得分:3)

<script>
var user_id = <?php echo $user_id; ?>
</script>
<script src="add_user.js" type="text/javascript"></script>

现在,您可以在user_id文件中使用add_user.js。另外,我建议against using PHP short tags

答案 2 :(得分:2)

您仍然可以在外部js文件中引用您的变量

<script type="text/javascript">
var yourvar = <? echo $user_id; ?>;
</script>
<script src="add_user.js" type="text/javascript"></script>

答案 3 :(得分:0)

在另一边开始会话。考虑到JS数据可能被破坏,甚至是故意的并且可能被利用(安全性),它也更加安全。

开始会话后 - 在那里读取值。

当然,这对同一个虚拟主机上的脚本有效。