为什么在AJAX调用中无法访问SESSION变量?

时间:2018-07-25 13:20:54

标签: javascript php ajax

我正在脚本中使用AJAX调用来从php脚本中获取一些数据。 到目前为止,我已经测试了AJAX调用的正确执行。但不幸的是,SESSION变量似乎不可用。

我目前正在重构一些代码,此AJAX调用转到了一些以前与脚本代码位于同一文件中的代码。在那里,各个php代码仍将执行,并且SESSION变量肯定在那里可用,否则整个页面可能会中断(可能)。

所以我想知道我是否忘记在php文件中包含某些内容或此类内容?

编辑:我将尽力说明所描述行为背后的代码是什么。

Calling.php中的代码(是它的javascript,但是作者(不是我)曾经决定制作一个同时包含HTML,javascript和php ...的php文件)

<?php session_start(); ?>
<script>
//Lots of Code
function Caller(){
$.ajax({
type:"POST",
url:'called.php',
success: function(data){
//debugging function taking data;
},
error: function(xhr, statusText, err){
//debugging function taking xhr.status
}
}

)
}
//Lots of Code
</script>

called.php中的代码

<?php
$test = $_SESSION["loggedUser"];

echo $test;
?>

1 个答案:

答案 0 :(得分:1)

Ajax调用与提供原始页面的过程不同,需要为每个请求再次调用session_start。。

您可以安全地执行此操作(如果已调用则没有错误或警告),如下所示:

if ( is_null($_SESSION) || !$_SESSION )
{
    session_start();
}

这应该存在于您的引导程序或索引文件中,并且在运行任何基于请求的逻辑之前,应始终从对php的所有请求中调用/包含/要求该请求。