首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将jquery的$(window).scrollTop()保存为PHP $_SESSION['scroll_pos']变量

将jquery的$(window).scrollTop()保存为PHP $_SESSION['scroll_pos']变量
EN

Stack Overflow用户
提问于 2014-03-21 16:40:17
回答 1查看 591关注 0票数 1

我将post数据发送到运行MySql语句的页面,然后通过页面重定向返回

代码语言:javascript
复制
header("location: {$_SERVER['HTTP-REFERER']}");

我试图使用Ajax$(window).scrollTop()值作为$_GET['scroll_pos']变量发送,如下所示:

代码语言:javascript
复制
<?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']变量,如下所示

代码语言:javascript
复制
<?php

    session_start();

    // VARIABLES
    $scroll_pos = $_GET['scroll_pos'];

    $_SESSION['scroll_pos'] = $scroll_pos;

?>

如上面的$(document).ready()函数所示,需要调用它。

窗口没有滚动到$_SESSION['scroll_pos']变量中指定的数量,为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-21 16:45:19

首先,您已经在使用jquery了,因此我强烈建议(但是,没有必要)使用在AJAX方法中构建的jquery。

https://api.jquery.com/jQuery.ajax/

它不能工作的原因是您不能echo出一个要在javascript中使用的值,您必须使用AJAX来获取这个值,然后设置滚动位置。

代码语言:javascript
复制
//WILL NOT WORK!!!!
$(window).scrollTop(<?php echo json_encode($_SESSION['scroll_pos']); ?>);

或者更好的是,将滚动位置保存在cookie或本地存储中,以避免对服务器进行不必要的调用.

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22564504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档