所以在我的PHP我有這樣的事情如何使用Ajax函數從php服務器獲取會話變量? (PHP HTML JS阿賈克斯)
$_SESSION['opened'] = true;
,但它不會被設置爲true,直到用戶將與其他一些HTML \ PHP頁面
所以執行某些操作我需要一些Ajax函數來獲取這個會話變量。還有一些PHP函數的樣本可以通過Ajax獲取。
所以我需要的東西給AJAX請求一個動作(對一些簡單的PHP代碼),它將返回一個值從$_SESSION
。
如何做這樣的事情?
所以在我的PHP我有這樣的事情如何使用Ajax函數從php服務器獲取會話變量? (PHP HTML JS阿賈克斯)
$_SESSION['opened'] = true;
,但它不會被設置爲true,直到用戶將與其他一些HTML \ PHP頁面
所以執行某些操作我需要一些Ajax函數來獲取這個會話變量。還有一些PHP函數的樣本可以通過Ajax獲取。
所以我需要的東西給AJAX請求一個動作(對一些簡單的PHP代碼),它將返回一個值從$_SESSION
。
如何做這樣的事情?
簡單jQuery例如:
var session;
$.ajaxSetup({cache: false})
$.get('getsession.php', function (data) {
session = data;
});
而且getsession.php
:
<?php
session_start();
print json_encode($_SESSION);
你不需要使用jQuery的AJAX,但我強烈推薦它。
編輯:
迴應:
我希望能夠告訴我的JS功能我要得到什麼變量。
你可以試試這個(未經測試):
var session;
$.ajaxSetup({cache: false})
$.get('getsession.php', {requested: 'foo'}, function (data) {
session = data;
});
而且PHP:
<?php
session_start();
if (isset($_GET['requested'])) {
// return requested value
print $_SESSION[$_GET['requested']];
} else {
// nothing requested, so return all values
print json_encode($_SESSION);
}
看一看在$.get文檔更詳細的介紹。
PHP文件在http://my.host/response.php
<?php
session_start();
if(isset($_SESSION['opened']))
echo "true";
?>
然後在HTML,添加jQuery如:
<script type="text/javascript" src="/path/to/jQuery-x.y.z.js"></script>
然後:
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
url:'/response.php',
cache:false,
success:function(data){
// Do something with the result
if(data=="true"){
$('#mydiv').show();
}else{
$('#mydiv').hide();
}
}
);
});
</script>
,並加入到myform.php
:
<h1>Some Random HTML</h1>
<div id='mydiv' class="<?php if(isset($_SESSION['opened']) && $_SESSION['opened']) echo "hidden_class";?>">
...</div>
由於這將給那些沒有JavaScript的人提供一致的體驗。您不必顯示/隱藏div。你真的可以做任何事情。
是的!我喜歡它,但如何獲得特定的會話變量?我想我能夠獲得特定的會話變量 - 不是全部。我希望能夠告訴我的JS函數我想獲得什麼變量。 – Rella 2010-05-04 12:34:15
只需將變量名作爲請求參數傳遞,以便PHP知道要返回什麼? – BalusC 2010-05-04 12:38:59
$。get()會緩存結果,這對會話不利。看到我的答案。 – 2010-05-04 12:41:16