Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在局部范围中定义全局范围的变量_Javascript_Ajax_Polling - Fatal编程技术网

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

我在用javascript工作。我试图在用户登录时重新加载页面。我正在轮询以不断检查用户数据。找到下面的代码

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:你真的读过答案了吗?它不建议使用服务器。