我有一个AJAX调用来更新$_SESSION变量,然后<script>应回显新变量。数据到达.php页面,并且也被存储到会话中。但是它会在AJAX调用后警告旧数据。
我尝试使用setTimeout,并且还尝试将发出警报的调用移到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'];}
?>

最佳答案

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


此行包含php代码,仅在页面加载时呈现。如果刷新页面并查看源,您将看到我已更新。

不确定要达到的目标,但这是一个逻辑错误

根据您的评论进行编辑

您可以从check.php返回值:

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


并更改您的js成功函数以警告数据:

success: function(data) {

         alert(data);

     });

07-25 21:14
查看更多