2012-07-21 64 views
0

我在index.php声明为阵列中的两个$_SESSION变量,说:

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

我做一个AJAX调用从index.phpresult.php,其中会话变量的值改变 到,说:

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

我做的是什么,我从两个数组中删除第一个元素,并添加回第一阵列,$_SESSION['a']

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

+0

只需提供他们回到了AJAZ通话。然后在JS中做他们喜欢的与他们... – 2012-07-21 20:05:05

+0

为什么你回滚我的编辑的任何特定原因? – 2012-07-21 20:12:58

+0

我没有意识到,我试图直接提出我的问题。抱歉! 我仍然卡住了,你能帮我吗? – 2012-07-21 20:24:47

回答

2

是的,在一个成功的ajax调用,你可以做到这一点。

+0

是否可以给我一个示例代码? – 2012-07-21 20:05:03

+0

那么,我假设你可以编码......在这种情况下,你可以用'true'或'false'的新值返回ajax响应,并让脚本再次读取$ _SESSION值。 – Peon 2012-07-21 20:06:59

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); 

} 
+0

我在index.php中打印$ _SESSION ['a'] [0]和$ _SESSION ['b'] [0]。但由于某种原因,它会根据旧数组打印第一个元素,而不是新设置的数组! – 2012-07-21 20:16:50

+0

你确定你在result.php中正确调用了'session_start()'吗? – 2012-07-21 20:49:29

+0

如果您想在index.php的PHP源代码中使用新会话变量,则必须在您的AJAX请求后重新加载页面。另外,正如你在你的问题中所说的,你将会话变量设置为'index.php',这可能意味着你每次将index.php加载到旧值时都会重写它们。为了防止这种情况,请检查我即将进行的编辑 – 2012-07-21 21:15:18