【问题标题】:Save jquery's $(window).scrollTop() as PHP $_SESSION['scroll_pos'] variable将 jquery 的 $(window).scrollTop() 保存为 PHP $_SESSION['scroll_pos'] 变量
【发布时间】:2014-03-21 16:40:17
【问题描述】:

我将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'] 变量中指定的量,这是怎么回事?

【问题讨论】:

    标签: javascript php jquery session


    【解决方案1】:

    首先,您已经在使用 jquery,所以我强烈建议(但是,这不是必需的)您使用内置 AJAX 方法的 jquery。

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

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

    //WILL NOT WORK!!!!
    $(window).scrollTop(<?php echo json_encode($_SESSION['scroll_pos']); ?>);
    

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

    【讨论】:

    • 我最终使用了一个名为 jquery.cookie 的 jquery 插件来使用 cookie 方法。感谢 jquery ajax 参考,一定会开始使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 2010-12-07
    相关资源
    最近更新 更多