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

问题描述:

我有一个加载会话变量PHP页面:如何将PHP会话变量传递给Javascript/jQuery函数?

$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函数的最佳方式是什么?

+1

你可以有JavaScript文件由PHP处理。例如,命名文件'add_user.php',然后执行''。 – 2011-12-23 16:12:26

+0

我想你应该在你的php生成的页面中使用一些全局JavaScript变量,或者至少使用隐藏字段来保存session_id值(然后从javascript访问它) – andreapier 2011-12-23 16:14:02

+0

为什么不使用href属性呢?将完整的网址添加到链接,并使用它。 – Ignas 2011-12-23 16:14:07

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

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

+0

缺少*某些服务器上的功能*不是不使用它的原因。许多主机仍然运行PHP 5.1,我们是否应该避免使用5.3特性? – 2011-12-23 16:30:28

+0

短标签取决于正确的配置设置,如果您打算将项目部署到不同的服务器,您应该习惯于使用标准的 2011-12-23 16:36:31

您可以配置您的网络服务器,将.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代码片段。

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

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

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

您仍然能够引用您的varible在外部JS文件

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