我需要一些幫助,當涉及到使用$_GET
,$_SESSION
和XMLHttpRequest
。我已經建造了一個最小工作實例來說明這個問題:
的index.php
<?php
session_start();
$_SESSION['current'] = 2;
?>
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="ajax.js"></script>
</head>
<body>
<div id="content"><?php include('table.php'); ?></div>
</body>
</html>
table.php
<?php
if(isset($_GET['current']))
{
$_SESSION['current'] = $_GET['current'];
}
$current = $_SESSION['current'];
echo '<h1>Table Value = '.$current.'<br>';
?>
browse.php
<?php
if(isset($_GET['current']))
{
$_SESSION['current'] = $_GET['current'];
}
$current = $_SESSION['current'];
echo '<h1>Browse value = '.$current.'<br>';
print "<input type=\"button\" value=\"Click here\" onclick=\"myfunc($current)\"/> ";
?>
個
ajax.js
function myfunc(input) {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","table.php?current=" + (input+1),false);
xmlhttp.send();
document.getElementById("content").innerHTML=xmlhttp.responseText;
xmlhttp.open("GET","browse.php",false);
xmlhttp.send();
document.getElementById("target").innerHTML=xmlhttp.responseText;
}
我用Firebug控制檯跟蹤發生了什麼的。首先讓我指出,我將async參數設置爲false,因爲我的服務器請求非常小。當我點擊按鈕myfunc(2)
被執行並且它從服務器請求./table.php?current=3
和./browser.php
。
我的想法是,由於我首先請求./table.php?current=3
,會話變量$_SESSION['current']
將被設置爲3.但是,當請求browse.php時,會話變量未設置!這是在我按一下按鈕,一旦發生了什麼:
任何想法可能是錯誤的?在此先感謝:)
您必須在** EVERY **腳本中使用'session_start()'來執行會話操作。由於你的表/瀏覽腳本沒有它,所以$ _SESSION將只是默認的空數組,在腳本終止時,沒有賦值給數組的值將被php保留。 –