javascript - 返回上一页时变量未定义

标签 javascript jquery function callback

我在获取变量未定义时遇到问题。基本上,当我转到另一个页面然后单击浏览器时,变量将变为未定义并且脚本停止工作。但是,如果我刷新浏览器,它确实可以在初始加载时工作。

//player admin callback
function getPlayerAdmin(admin_callback){
    var admin_data = false;
    var formData = {
        'player_id' : $('#post-v').attr('data-val')
    };

    $.ajax({
        type: 'post',
        url: '/popins/player/controls',
        data : formData,
        dataType : 'json',
        success: function(data) {
            admin_callback(data); 
        },
        error : function(jqXHR, textStatus, errorThrown){
            console.log(jqXHR);
        }
    });
}

//load youtube videos
function loadPlayerVideos(){
    var player_id = $('#post-v').attr('data-val');

    //get admin
    getPlayerAdmin(function(output) {

        console.log(JSON.stringify(output));

        if(output.controls.is_admin == true){
            admin_data = true;
        }else{
            admin_data = false;
        }
    });
}

返回的数据为:

{"controls":{"is_admin":true}}

我的问题是我收到“ Uncaught ReferenceError :admin_data 未定义”。

有人知道为什么变量未定义吗?

谢谢!

最佳答案

我之前也遇到过同样的问题。我认为这不是浏览器问题(我们谈论的是 session ,即只读服务器端,在客户端上您只需拥有 token 来识别您的 session 是什么)。

猜测当您返回时,服务器代码没有被执行(浏览器缓存了页面,并且只会加载图像或 JavaScript 等资源)。 您可以使用 localStorage

改进在客户端进行此类检查的行为

示例:

 localStorage.setItem('is_admin', 'true'); 

然后在 page1 中添加此客户端:

 if(localStorage.getItem('is_admin') === 'true'){

 } 

这个应该可以正常工作。希望对您有帮助!

关于javascript - 返回上一页时变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40580677/

相关文章:

javascript - 当用户已经向下滚动页面时,如何导航到 anchor 标记?

javascript - AJAX - 重新加载网页的一部分而不使用单独的文件来加载

JavaScript——无法理解 Array.Map 和 Array.reduce

javascript - 如何访问多个嵌套函数的最内层函数?

C++ (C++11) 中的函数对象

javascript - 无法读取 'undefined' 的属性推送

javascript - 是否允许发出无限数量的 XMLHTTP 请求对象?

javascript - Google map - 保留地理编码 -> 错误 "invalid label"

jquery SlideToggle 调用一次

javascript - 如何使用 javascript 获取滚动条宽度(在最新的 chrome 中)