我的页面内容很重,需要大约1.5分钟才能完全加载。我已经在滚动功能上添加了检索数据,当用户滚动检索数据时,我会调用ajax请求。
我已将数据检索行为包装到函数handleEventsLoad()
并在加载时调用此函数,试图覆盖用户在页面完全加载到达结尾之前滚动的情况:
$(document).ready(function()
{
$(window).scroll(function()
{
handleEventsLoad();
});
handleEventsLoad();
});
ajax
请求被正确调用,但是,第一次调用此请求时,我无法读取$_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
连接:保持活力
缓存控制:max-age = 0
响应:
第一个电话:
Set-Cookie:PHPSESSID = 79c38493322374f1bc19541f4c538b02;期满=星期一, 2016年3月7日18:38:41 GMT;路径= /;域= www.mydomain.com;安全; HttpOnly PHPSESSID = 79c38493322374f1bc19541f4c538b02;期满=星期一, 2016年3月7日18:38:41 GMT;路径= /
第二次电话:
Set-Cookie:PHPSESSID = 79c38493322374f1bc19541f4c538b02;到期=周一,07-Mar-2016 18:40:06 GMT;路径= /