我是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,第一个警报返回“已更改”,第二个警报返回“未更改”。为什么会这样?任何帮助将不胜感激!
答案 0 :(得分:1)
您正在从服务器端代码输出客户端代码。
第二个警报始终输出PHP执行时$global_var
设置的值。 (在执行客户端$.post
之前。)
您使用第一个警报执行此操作的方式通常是您希望如何获取数据。
如果这不是ajax请求,而是您直接发布到PHP并从服务器接收完整页面刷新,则第二个警报将起作用。