返回上一页时,变量未定义

时间:2016-11-14 01:22:21

标签: 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}}

我的问题是我得到了一个未被捕获的ReferenceError:admin_data未定义'。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

之前我遇到过同样的问题。我认为这不是一个浏览器问题(我们讨论的是会话,只读服务器端,客户端上只有令牌来识别你的会话)。

猜测当你回去时服务器代码没有被执行(浏览器有缓存的页面,只会加载像图像或javascript这样的资源)。 您可以使用 localStorage

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

示例:

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

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

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

 } 

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