Javascript PHP会话在第一次Ajax调用时为空
我有一个页面,有一些沉重的内容,需要大约1.5分钟才能完全加载。我添加了滚动检索数据功能,当用户滚动检索数据时,我调用ajax请求 我已将数据检索行为包装到一个函数Javascript PHP会话在第一次Ajax调用时为空,javascript,php,jquery,ajax,session,Javascript,Php,Jquery,Ajax,Session,我有一个页面,有一些沉重的内容,需要大约1.5分钟才能完全加载。我添加了滚动检索数据功能,当用户滚动检索数据时,我调用ajax请求 我已将数据检索行为包装到一个函数handleEventsLoad(),并在加载时调用此函数,试图涵盖用户在页面完全加载到末尾之前滚动的情况: $(document).ready(function() { $(window).scroll(function() { handleEventsLoad(); });
handleEventsLoad()
,并在加载时调用此函数,试图涵盖用户在页面完全加载到末尾之前滚动的情况:
$(document).ready(function()
{
$(window).scroll(function()
{
handleEventsLoad();
});
handleEventsLoad();
});
ajax
请求被正确调用,但是,第一次调用此请求时,我无法在$\u session
中读取任何PHP级别的会话数据,因为我知道会话是在页面加载时设置的,如果我在HTML中打印它,我可以看到它的值
在第一次完全加载页面并刷新页面后,会调用相同的请求,但这次我可以正确读取会话数据,并且自动加载滚动功能会按预期运行(这里的区别是所有数据都已缓存,加载页面需要7秒)
加载过程是否与在ajax调用时读取会话有关?
下面是ajax的一个示例:
function handleEventsLoad()
{
if($('#sidebar').length > 0
&& $(window).scrollTop() >= $('#sidebar').offset().top + $('#sidebar').outerHeight() - window.innerHeight)
{
$.ajax({
url: "ajaxUrl.php",
type: 'GET',
dataType: 'json',
data: {/* passing some data */},
success:function(data)
{
// some code here
},
error: function(xhr, status, error)
{
var err = eval("(" + xhr.responseText + ")");
console.log(err.Message);
}
});
}
}
ajaxUrl.php
<?php
session_start();
print_r($_SESSION);
return;
?>
更新 请在下面查找第一次和第二次ajax调用之间HTTP请求的差异: 请求: 第一个电话: 连接:保持活力 第二个电话: Cookie:_ga=GA1.2.1253088293.1457289524_gat=1;PHPSESSID=79c38493322374f1bc19541f4c538b02 连接:保持活力 缓存控制:最大年龄=0 响应: 第一个电话: 设置Cookie:PHPSESSID=79c3849322374f1bc19541f4c538b02;expires=Mon, 2016年3月7日18:38:41格林尼治标准时间;路径=/;domain=www.mydomain.com;保护 HttpOnly PHPSESSID=79c3849322374f1bc19541f4c538b02;expires=Mon, 2016年3月7日18:38:41格林尼治标准时间;路径=/ 第二个电话: 设置Cookie:PHPSESSID=79c3849322374f1bc19541f4c538b02;expires=2016年3月7日星期一18:40:06 GMT;路径=/
在初始页面加载时,会话中似乎没有任何内容。主页中有会话代码吗?我在页面加载上设置了一个虚拟会话值,只是为了测试会话['foo']='bar'代码>我可以在以后打印会话时看到它,但不能在ajax调用中看到。@charlietfl我已经添加了Http请求和响应,这对您有什么影响吗?您是否也有会话_start();在主页顶部?听起来在初始页面加载时会话中没有任何内容。主页中有会话代码吗?我在页面加载上设置了一个虚拟会话值,只是为了测试会话['foo']='bar'代码>我可以在以后打印会话时看到它,但不能在ajax调用中看到。@charlietfl我已经添加了Http请求和响应,这对您有什么影响吗?您是否也有会话_start();在你的主页上?