Можно ли прочитать значение сеанса с помощью Javascript?
Например, если я назначил значение в сеансе в PHP:
$_SESSION['msg'] = "ABC Message";
Можно ли читать $_SESSION['msg']
с помощью Javascript?
$ _SESSION – это серверная конструкция. Вам нужно будет сохранить эту переменную в $ _COOKIE, чтобы иметь доступ к ней на стороне клиента.
Очень простой способ – создать JavaScript с некоторым PHP-кодом:
<script type="text/javascript"> <?php echo 'var msg = "'.json_encode($_SESSION['msg']).'";'; </script>
.. Или вы можете использовать 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>
Чтобы сделать еще более простой пример ответа Луиса Мелгратти, вы можете просто вернуть json закодированное значение из PHP и использовать 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
<script type="text/javascript"> var foo="<?php echo $_SESSION['user_id']; ?>"; alert(foo); </script>
Может ли это работать:
function getCookie(name) { var value = "; " + document.cookie; var parts = value.split("; " + name + "="); if (parts.length == 2) return parts.pop().split(";").shift(); } getCookie('PHPSESSID');