php全局变量没有更新

时间:2015-03-06 21:49:11

标签: php jquery ajax

我是php和ajax的新手。我有一个'test3.php'文件,我对另一个php文件'test2.php'进行了ajax调用。在test2.php中有一个全局变量,以及一个改变全局变量值的简单函数。

一旦ajax请求完成,我就会回显返回的数据,这是全局变量,以确保它的值确实发生了变化。但是,当我用php警告这个全局变量时,它的值不会更新。

test3.php:

<?php 
include('test2.php');
?>
<html>


<body>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script type="text/javascript">
        $.post('test2.php', { action: 'u', file:'file'},
               function(data){
            alert(data);
            alert('<?php echo $global_var; ?>');
        });
    </script>
</body></html>

test2.php:

<?php 
$global_var = "unchanged";

if(isset($_POST['action'])){
    if($_POST['action'] == 'u'){
        setValue();
        echo $global_var;
    }
}

function setValue(){
    global $global_var;
    $global_var = "changed";
}

?>

如果我运行test3.php,第一个警报返回“已更改”,第二个警报返回“未更改”。为什么会这样?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您正在从服务器端代码输出客户端代码。

第二个警报始终输出PHP执行时$global_var设置的值。 (在执行客户端$.post之前。)

您使用第一个警报执行此操作的方式通常是您希望如何获取数据。

如果这不是ajax请求,而是您直接发布到PHP并从服务器接收完整页面刷新,则第二个警报将起作用。