将PHP变量传递给JavaScript

时间:2011-03-15 10:11:40

标签: php javascript

我在整个会话期间都有一个PHP会话变量$_SESSION['user']。在head部分中,我包含了我的JavaScript文件scripts.js

如果我需要以下内容,如何将会话变量传递到JavaScript文件中。

$.("#btn').click (
     function() {
        alert('<?php echo $_SESSION['user']; ?>');
     }
)

由于JavaScript文件中无法识别<?php ?>,因此上述代码无效。所以我要自己输入PHP文件,但是如何将它保存在JavaScript文件中呢?

5 个答案:

答案 0 :(得分:14)

在PHP文件中,您可以将用户设置为全局变量:

<script type="text/javascript">
    var ptamzzNamespace = {
       sessionUser : '<?php echo $_SESSION['user']; ?>'
    }        
</script>

在包含外部JavaScript代码之前包含此内容。

然后在您的JavaScript文件中,您可以使用它:

$.("#btn').click (
     function() {
        alert(ptamzzNamespace.sessionUser);
     }
)

<强>此外: 如果您不确定会话varibale是否可以包含引号,则可以使用addslashes()来解决此问题:

<?php echo addslashes($_SESSION['user']); ?>即使这可能产生一些你不想显示的东西(因为它产生一个带有斜杠的字符串),它将有助于你的代码不会失败。 (感谢Artefacto)

这会是你的选择吗?

答案 1 :(得分:2)

在文件中隐藏的输入类型中设置userID(在PHP中)。在您的JavaScript代码中,您可以读取隐藏的输入类型值。

答案 2 :(得分:1)

您可以将服务器设置为解析.js文件为PHP。例如,在Apache config或.htaccess文件中:

<FilesMatch "scripts.js">
    AddHandler application/x-httpd-php5 .js
</FilesMatch>

答案 3 :(得分:0)

将包含的JavaScript文件解析为PHP

在JavaScript目录中创建.htaccess文件,并添加以下行。

AddHandler php-cgi .js

<?php ?>标记到现在都被您的JavaScript文件识别。

使用Ajax获取用户ID

创建一个名为getID.php的文件,该文件仅回显用户ID。然后在JavaScript文件中,您可以使用以下代码。

$.get('getID.php', function(uid) {
  alert('User ID is:' + uid);
});

在包含JavaScript打印用户ID之前创建脚本标记。

<script type="text/javascript">
userID = <?php echo $_SESSION['user']; ?>;
</script>

您现在可以使用变量userID访问用户ID。

答案 4 :(得分:0)

尝试以下逻辑

print ' <script type="text/javascript" language="javascript"> 
function checkForm() 
{ 
     var username = "'.$_SESSION['user'].'"; 
     if( username == '') 
     { 
        alert('No Times selected'); 
        return false; 
      }
}
</script>';