我将post
数据发送到运行MySql
语句的页面,然后通过页面重定向返回
header("location: {$_SERVER['HTTP-REFERER']}");
我正在尝试使用Ajax
将$(window).scrollTop()
值作为$_GET['scroll_pos']
变量发送,如下所示:
<?php session_start(); ?>
$(document).ready(function(){
// SET SCROLL SESSION VARIABLE
$(window).scroll(function(){
var xmlhttp;
if( window.XMLHttpRequest ){
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject( 'Microsoft.XMLHTTP' );
}
xmlhttp.open('GET', 'script_files/set_scroll_session.php?scroll_pos=' +
$(window).scrollTop(), true);
xmlhttp.send();
});
// SCROLL TO $_SESSION['scroll_pos'];
$(window).scrollTop(<?php echo json_encode($_SESSION['scroll_pos']); ?>); // <-- THIS IS NOT FIRING
});
set_scroll_session.php
页面将$_GET['scroll_pos']
保存为$_SESSION['scroll_pos']
变量,如此
<?php
session_start();
// VARIABLES
$scroll_pos = $_GET['scroll_pos'];
$_SESSION['scroll_pos'] = $scroll_pos;
?>
需要调用,如上面的$(document).ready()
函数所示。
窗口没有滚动到$_SESSION['scroll_pos']
变量中指定的数量,怎么回事?
答案 0 :(得分:1)
首先,你已经在使用jquery了,所以我强烈推荐(但是,没有必要)使用jAXys构建的AJAX方法。
https://api.jquery.com/jQuery.ajax/
它不起作用的原因是因为你不能echo
在这样的javascript中使用一个值,你必须使用AJAX来获取该值,然后设置滚动位置。
//WILL NOT WORK!!!!
$(window).scrollTop(<?php echo json_encode($_SESSION['scroll_pos']); ?>);
或者更好的是,将滚动位置保存在cookie或本地存储中,以避免对服务器进行不必要的调用...