没有页面重新加载的$ _SESSION更改

时间:2012-07-21 20:03:00

标签: php ajax session session-variables

我在$_SESSION中声明为数组的两个index.php变量,例如:

$_SESSION['a'] = array(1,2,3);
$_SESSION['b'] = array(4,5,6);

我从index.phpresult.php进行AJAX调用,其中会话变量的值发生了变化 ,说:

$_SESSION['a'] = array(2,3,1,4);
$_SESSION['b'] = array(5,6);

我所做的是,我从两个数组中删除第一个元素并将其追加到第一个数组$_SESSION['a']

成功进行AJAX调用后,我想打印index.php中两个变量的第一个元素。有可能吗?

2 个答案:

答案 0 :(得分:2)

是的,在成功的ajax通话中,您可以这样做。

答案 1 :(得分:0)

这很简单。

在您的results.php中,您只需使用一些JSON返回新数据。

result.php:

//set the session vars to whatever here....

//now, return them. In the example, I shall assign your session vars to temp vars.

$sessA=$_SESSION['a'];
$sessb=$_SESSION['b'];

echo json_encode(array('a'=>$sessA,'b'=>$sessb));

现在在你的AJAX中(假设你正在使用jQuery):

$.getJSON('results.php', function(data){

alert(data.a);
alert(data.b);

});

你有它。

编辑:

在index.php中,您说您将会话变量设置为原始值。但是在你的评论中,你说你想在index.php中使用新的变量。如果您在每个请求中将它们设置为index.php中的原始值,则无法执行此操作。你应该做的是检查它们是否已经先设置好,然后再做需要做的事情。像这样:

而不是:

$_SESSION['a'] = array(1,2,3);
$_SESSION['b'] = array(4,5,6);

这样做:

if ( isset($_SESSION['a']) === false && isset($_SESSION['b']) === false )
{

# - The vars are not already set...so it's okay to set them to its original value.

$_SESSION['a'] = array(1,2,3);
$_SESSION['b'] = array(4,5,6);

}