2013-12-18 23 views
0

我有一个AJAX调用,更新$_SESSION变量,然后<script>应该回显新变量。数据到达.php页面,并且正在存储到会话中。但它在AJAX调用之后提醒旧数据。
我尝试过使用setTimeout,并尝试移动呼叫,呼叫AJAX成功呼叫之外的新变量。我仍然得到相同的结果。旧会话数据AJAX调用后收到提醒

为什么不提示新的$_SESSION数据?

AJAX

<script> 
$(function() { 
    $('#sendBtn').click(function() {     
     var theva = $("#element_23").val();         
     $.ajax({ 
     type : "POST", 
     url :'check.php', 
     data : {theva : theva}, 
     success: function() { 
      setTimeout(function() { 
      var theva2 = "<? echo $_SESSION['disp'];?>"; 
      alert(theva2);},3000);}       
     });         
    });  
}); 
</script> 

check.php

<? 
if($_POST){ 
$_SESSION['disp'] = $_POST['theva'];} 
?> 
+0

避免使用简写标签。 –

+0

查看页面源代码,你看到了什么?了解页面生命周期。 – epascarello

回答

3
var theva2 = "<? echo $_SESSION['disp'];?>"; 

此行包含PHP代码,将只能获得在页面加载渲染。如果刷新页面并查看源代码,您将看到我已更新。

不知道你想达到什么样的,但是这是一个逻辑errer

编辑按您的评论

您可以从check.php返回值:

<? 
if($_POST){ 
    $_SESSION['disp'] = $_POST['theva']; 
    echo 'Session value is now: '.$_SESSION['disp']; 
} 
?> 

而且改变你的js成功功能来提醒数据:

success: function(data) { 

     alert(data); 

    }); 
+0

是否可以在不刷新页面的情况下提醒新会话变量的值? –

+0

@GhostEcho编辑解释 – Steve

+0

有道理和作品,谢谢! –

1

因为PHP是破的ered在服务器上。当您加载包含AJAX请求的页面时,将解释PHP代码,然后theva2将包含您的会话变量。

您可能会在之后对其进行更改,但由于主页面(包含AJAX代码)永不重新加载,它仍会显示旧值(因为它在您加载页面时呈现在服务器端,而不是在您制作时AJAX请求)。

+0

是否可以在不刷新页面的情况下提醒新会话变量的值? –

+0

你可以添加它作为你的'check.php'文件的响应,所以AJAX调用将能够检索到这个响应。但是,我没有看到这样做的目的,因为您已经知道您的会话值将包含'theva'变量(因为这是原始参数)。 – g00glen00b