【发布时间】:2010-10-19 18:41:29
【问题描述】:
是否可以使用 Javascript 读取会话值?
例如,如果我在 PHP 中为会话赋值:
$_SESSION['msg'] = "ABC Message";
是否可以使用 Javascript 读取 $_SESSION['msg']?
【问题讨论】:
标签: php javascript session
是否可以使用 Javascript 读取会话值?
例如,如果我在 PHP 中为会话赋值:
$_SESSION['msg'] = "ABC Message";
是否可以使用 Javascript 读取 $_SESSION['msg']?
【问题讨论】:
标签: php javascript session
一种非常简单的方法是使用一些 PHP 代码生成 JavaScript:
<script type="text/javascript">
<?php echo 'var msg = "'.json_encode($_SESSION['msg']).'";';
</script>
【讨论】:
$_SESSION 是一个服务器端结构。您需要将该变量存储在 $_COOKIE 中才能在客户端访问它。
【讨论】:
.. 或者您可以使用 ajax 将您的服务器端会话值检索到您的客户端 javascript。` (快速、肮脏和未经测试的示例,使用jQuery)
Javascript 端:
$.ajax({
url: "test.php",
cache: false,
success: function(html){
eval( html ); /// UGLY NASTY YOU MUST VALIDATE YOUR INPUTS... JUST AN EXAMPLE
}
});
PHP端test.php:
echo 'var myData = "'. $_SESSION['msg'].'"';
【讨论】:
如果这对任何人有帮助,这些示例返回 null,所以我只是使用:
<?php session_start();
$msg = $_SESSION['msg'];
?>
<script>
<?php echo "var msg = '" .$msg . "'"; ?>
</script>
【讨论】:
<script type="text/javascript">
var foo="<?php echo $_SESSION['user_id']; ?>";
alert(foo);
</script>
【讨论】:
为了让 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-thread 上还有更多答案:how-to-access-php-session-variables-from-jquery-function-in-a-js-file
【讨论】:
愿它起作用:
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2) return parts.pop().split(";").shift();
}
getCookie('PHPSESSID');
【讨论】: