Javascript 在局部范围中定义全局范围的变量
我在用javascript工作。我试图在用户登录时重新加载页面。我正在轮询以不断检查用户数据。找到下面的代码Javascript 在局部范围中定义全局范围的变量,javascript,ajax,polling,Javascript,Ajax,Polling,我在用javascript工作。我试图在用户登录时重新加载页面。我正在轮询以不断检查用户数据。找到下面的代码 var check; function poll(){ return $.ajax({ url: 'http://localhost:3000/poll', type:'GET', xhrFields: { withCredentials: true } }).done(functi
var check;
function poll(){
return $.ajax({
url: 'http://localhost:3000/poll',
type:'GET',
xhrFields: { withCredentials: true }
}).done(function(data){
console.log(data); // if user is logged in ,server sends the user object else it doesn't
if(typeof data.name !== "undefined"){
check = '1'; // Browser doesnt remember check was 1 after reload
window.location.reload();
} else
{
setTimeout(function(){ poll(); }, 5000);
}
});
}
if(typeof check == 'undefined'){ // Problem is here on reload, browser doesnt remember that i set `check = 1` in above condition.
setTimeout(function(){ poll(); }, 5000);
}
我试图让工作流程像
1) 如果用户未登录,则应继续轮询。它应该不断检查用户是否登录
2) 如果用户已登录,则自动重新加载页面并停止轮询您可以使用浏览器或Cookie的本地存储(HTML5)。将“window.parent.check”替换为“check”,但如果重新加载页面,则会重新加载整个js。应使用GET参数重新加载页面为什么使用
window.parent.check
?这仅在与iframe
结合使用时有用,但由于您没有提及任何有关iframe
的内容,您可能会对窗口的用途产生误解。即使使用了iframe
,代码也没有多大意义。@Hacketo我尝试了“检查”,但不起作用,我一直在寻找一种方法,在重新加载函数时通过一些参数,但没有成功。我删除window.parent.check以避免混淆我无法使用服务器端。在客户端可能吗?@NeiL:你真的读过答案了吗?它不建议使用服务器。