我遇到的问题是变量未被定义。基本上,当我转到另一个页面,然后单击浏览器时,变量将不确定,脚本将停止工作。但是,如果我刷新浏览器,它确实可以在初始加载时使用。
//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未定义'。
有人知道为什么变量未定义?
谢谢!
答案 0 :(得分:2)
之前我遇到过同样的问题。我认为这不是一个浏览器问题(我们讨论的是会话,只读服务器端,客户端上只有令牌来识别你的会话)。
猜测当你回去时服务器代码没有被执行(浏览器有缓存的页面,只会加载像图像或javascript这样的资源)。 您可以使用 localStorage
改善在客户端执行此类检查的行为示例:
localStorage.setItem('is_admin', 'true');
然后在page1中,添加此客户端:
if(localStorage.getItem('is_admin') === 'true'){
}
这个应该可以正常工作。希望它有所帮助!