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)\"/> ";
?>
我使用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();