使用Javascript读取会话值

时间:2009-04-16 04:30:26

标签: php javascript session

是否可以使用Javascript读取会话值?

例如,如果我在PHP中为会话分配了一个值:

$_SESSION['msg'] = "ABC Message";

是否可以使用Javascript阅读$_SESSION['msg']

6 个答案:

答案 0 :(得分:39)

一种非常简单的方法是使用一些PHP代码生成JavaScript:

<script type="text/javascript">
    <?php echo 'var msg = "'.json_encode($_SESSION['msg']).'";';
</script>

答案 1 :(得分:20)

$ _ SESSION是服务器端构造。您需要将该变量存储在$ _COOKIE中,以便能够在客户端访问它。

答案 2 :(得分:5)

..或者您可以使用ajax将服务器端会话值重新转换为客户端javascript (快速,肮脏和未经测试的示例,使用jQuery

Javascript Side:

$.ajax({
      url: "test.php",
      cache: false,
      success: function(html){
        eval( html ); /// UGLY NASTY YOU MUST VALIDATE YOUR INPUTS... JUST AN EXAMPLE
      }
    });

PHP side test.php:

echo 'var myData = "'. $_SESSION['msg'].'"';

答案 3 :(得分:3)

如果这对任何人都有帮助,那些示例会返回null,所以我只是使用了:

<?php session_start();
   $msg = $_SESSION['msg'];
?>

<script>
   <?php echo "var msg = '" .$msg . "'"; ?>
</script>

答案 4 :(得分:1)

为了让Luis Melgratti回答你更简单的例子,你可以从PHP返回一个json编码的值并使用jQuery来解析它,如下所示:

<强>使用Javascript:

$("#some_button")
    .click(function()
    {
        $.ajax(
        {
            url: "get_session.php",
            cache: false
        })
        .done(function(result)
        {
            var session_credentials = $.parseJSON(result);
            console.log(session_credentials);
        });
    });

<强> PHP:

//get_session.php
<?php
    session_start();
    echo json_encode($_SESSION);
?>

我相信在类似的SO主题上还有更多答案:how-to-access-php-session-variables-from-jquery-function-in-a-js-file

答案 5 :(得分:1)

可能有效:

function getCookie(name) {
  var value = "; " + document.cookie;
  var parts = value.split("; " + name + "=");
  if (parts.length == 2) return parts.pop().split(";").shift();
}

getCookie('PHPSESSID');