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

标签 javascript php jquery session

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

最佳答案

首先,您已经在使用 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 或本地存储中,以避免不必要的服务器调用...

关于javascript - 将 jquery 的 $(window).scrollTop() 保存为 PHP $_SESSION ['scroll_pos' ] 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22564504/

相关文章:

javascript - 如何使用 Angular 5 构建 Chrome 扩展

php - 处理电子商务网站更新的最佳方式是什么?

jquery - Localstorage to JSON : How can I delete only 1 array inside a key since localstorage. remove Item 需要整个key

jquery - 检查页面上是否已存在链接

jquery - 在 jquery 对话框中加载表单会导致空的 serialize()

javascript - 使用angularJS参数从div调用函数

javascript - 将 List<int> 作为 Javascript 函数的参数传递

php - 应用程序错误 "SQLSTATE[42000]"

javascript - 如何 trim/删除嵌套/树状JSON中的节点?

php - Codeigniter $this->db->insert_id() 在 mysqli 上返回 0 但 $this->db->query ('SELECT LAST_INSERT_ID()' ) 有效