Php $\u GET、$\u会话和XMLHttpRequest出现问题

Php $\u GET、$\u会话和XMLHttpRequest出现问题,php,javascript,http,Php,Javascript,Http,在使用$\u GET、$\u会话和XMLHttpRequest时,我需要一些帮助。我构建了一个最低限度的工作示例来说明问题: index.php <?php session_start(); $_SESSION['current'] = 2; ?> <html> <head> <script type="text/javascript" src=

在使用
$\u GET
$\u会话
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>
<?php
if(isset($_GET['current']))
{
    $_SESSION['current'] = $_GET['current'];
}

$current = $_SESSION['current'];

echo '<h1>Table Value = '.$current.'<br>';

?>
<?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)\"/>&nbsp;";

?>
我使用Firebug控制台来跟踪正在发生的事情。首先让我指出,我将async参数设置为false,因为我的服务器请求非常小。当我点击按钮时,myfunc(2)被执行,它从服务器请求
/table.php?current=3
/browser.php

我的想法是,由于我首先请求
/table.php?current=3
,会话变量
$\u session['current']
将设置为3。但是当请求browse.php时,会话变量没有设置!这是我单击按钮一次后发生的情况:


你知道哪里不对吗?提前感谢:)

您需要添加
会话_start()
在browser.php的开头。(正如Marc B对您的问题的评论)

如果不确定已启动会话的另一个脚本中包含了哪个脚本,则可以使用

if(!session_id()) session_start();
在每个php脚本的开头

根据你的推理:

我将async参数设置为false,因为我的服务器请求太小了


问题在于网络通信可能会在相当长的时间内冻结页面(在某些情况下可能会永久冻结),而不管响应的大小。

在执行会话操作的每个脚本中,都必须使用
session\u start()
。由于您的表/浏览脚本没有$\u会话将只是默认的空数组,并且在脚本终止时php不会保留分配给该数组的值。
if(!session_id()) session_start();