$_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>';
?>
ブラウズ.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 がリクエストされたとき、セッション変数は設定されていません! ボタンを 1 回クリックすると、次のようになります。
何が間違っているのでしょうか?前もって感謝します :)