Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.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/7/css/37.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_Jquery_Html_Loops_Page Refresh - Fatal编程技术网

在循环运行之后,使用Javascript刷新窗口

在循环运行之后,使用Javascript刷新窗口,javascript,jquery,html,loops,page-refresh,Javascript,Jquery,Html,Loops,Page Refresh,我正在为我工作的公司编写一个新闻显示,我试图让页面在整个JSON数组中循环后刷新。目前一切都正常,但我不完全确定刷新命令将放在哪里。它目前所在的位置没有执行。这是我的相关代码: var i=0, d=零, x=null, 间隔=3000; console.log('welcome'); $(文档).ready(函数(){ fetch(); log('fetching'); }); 函数fetch(){ //在页面加载时获取数据*一次* $.getJSON('info.json?ver='+Ma

我正在为我工作的公司编写一个新闻显示,我试图让页面在整个JSON数组中循环后刷新。目前一切都正常,但我不完全确定刷新命令将放在哪里。它目前所在的位置没有执行。这是我的相关代码:

var i=0,
d=零,
x=null,
间隔=3000;
console.log('welcome');
$(文档).ready(函数(){
fetch();
log('fetching');
});
函数fetch(){
//在页面加载时获取数据*一次*
$.getJSON('info.json?ver='+Math.floor(Math.random()*100),函数(数据){
//将数据存储在全局变量“d”中
d=数据[0];
console.log(“结果”);
控制台日志(数据);
//创建对update()的定期调用
x=设置间隔(函数(){
更新()
},间隔);
});
}
函数更新(){
log('updatestarting');
//如果没有数组元素,请重置为第一个元素
if(d&!d[i]){
log('got the D');
净间隔(x);
i=0;
fetch();
返回;
如果(d[i]>=d.length){
//如果变量长于数组,请刷新窗口
console.log(“刷新”);
window.location.reload();
}
}
//从页面中删除以前的项目
$('ul').empty();
//将下一项添加到页面
$('ul')。追加(
“
  • ”+d[i][news] +“
  • ” ); //下一次迭代的增量 i++; }
    
    

      如果我理解了你的问题,你只需要知道你的重新加载功能在哪里是正确的

      这是
      window.location.reload()


      “完成”部分中编写的函数将在完成主函数中的所有代码后执行

      我已经明白了这一点,这是我原本不打算实现的方向。我意识到,一旦我在.json文件中包含了用于版本控制的RNG,我实际上就不需要刷新页面了。我使用的是一个迭代循环,因此一旦循环完成,它就会返回顶部,并重新打开
      info.json
      。我的RNG看起来像这样:

      $.getJSON('info.json?ver=' + Math.floor(Math.random() * 100) + '.' + Math.floor(Math.random() * 100), function(data){
      //code here
      }
      
      info.json?ver=1.23
      info.json?ver=2.42
      info.json?ver=1.15
      
      这意味着每次调整
      $.getJSON
      时,它都会看到与以前不同的版本号,这会强制服务器检查和下载,从而使文件中的内容能够自动更新到屏幕上。网络来源如下所示:

      $.getJSON('info.json?ver=' + Math.floor(Math.random() * 100) + '.' + Math.floor(Math.random() * 100), function(data){
      //code here
      }
      
      info.json?ver=1.23
      info.json?ver=2.42
      info.json?ver=1.15
      

      肯定不是我想要的解决方案,但它实际上是一个比我的问题更好的解决方案。

      如果(d[I]>=d.length){
      应该是
      如果(I>=d.length){
      我能看到的第一件事是,在同一个块中(在提取后的更新函数中)有一个return语句,后跟代码.return正在停止执行该函数。我的措辞错误。我需要知道循环运行后,页面刷新的位置。当前,
      窗口.location.reload()
      命令根本没有执行。我希望在数组循环通过
      .done(函数(数据)的位置后重新加载该命令{
      函数正在导致页面立即刷新,而不执行update()函数在数组中循环。只是一个建议-您可以使用时间戳,而不是使用随机数;类似于
      'info.json?t='+Date.now()
      。这样数字将始终是唯一的。使用随机数是有机会的(尽管这是最小的,因为您使用了两个)两次使用相同的数字,从而提取JSON文件的缓存副本。或者,设置服务器为目录中的JSON文件发送一个无缓存头。关于重新加载,类似于
      if(i>=d.length){window.location.reload();}
      更新
      中增加
      i
      后,可能会工作,但这不能保证从服务器中提取JSON。你说得对,我已经更新了代码,改为使用它。我想抓取一个随机时间戳会比让兄弟做两次数学更好。同样,对于一个永久唯一的数字,事情也会变得更糟在刷新中更好一点。谢谢你的建议!