【发布时间】:2015-03-06 21:49:10
【问题描述】:
我是 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,第一个警报返回“已更改”,第二个警报返回“未更改”。为什么会发生这种情况?任何帮助将不胜感激!
【问题讨论】:
-
看到以这种方式处理的变量总是让我畏缩
-
@JohnConde 就像是盗梦空间!