在循环完成 运行 后使用 Javascript 刷新 window
Use Javascript to refresh a window after a loop has run its course
我正在为我工作的公司编写新闻显示,我试图让页面在遍历 JSON 数组的整个长度后刷新。目前一切正常,但我不完全确定刷新命令的去向。目前它所在的位置没有执行。这是我的相关代码:
var i = 0,
d = null,
x = null,
interval = 3000;
console.log('welcome');
$(document).ready(function(){
fetch();
console.log('fetching');
});
function fetch(){
// get the data *once* when the page loads
$.getJSON('info.json?ver=' + Math.floor(Math.random() * 100), function(data){
// store the data in a global variable 'd'
d = data[0];
console.log('results');
console.log(data);
// create a recurring call to update()
x = setInterval(function(){
update()
}, interval);
});
}
function update(){
console.log('update starting');
// if there isn't an array element, reset to the first once
if (d && !d[i]){
console.log('got the D');
clearInterval(x);
i = 0;
fetch();
return;
if(d[i] >= d.length){
// refresh the window if the variable is longer than the array
console.log('refreshing');
window.location.reload();
}
}
// remove the previous items from the page
$('ul').empty();
// add the next item to the page
$('ul').append(
'<li>' + d[i]['news']
+ '</li>'
);
// increment for the next iteration
i++;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='news'>
<ul></ul>
</div>
如果我理解你的问题,你只需要知道你的重新加载函数在哪里是正确的?
好吧 window.location.reload();
$.getJSON('info.json?ver=' + Math.floor(Math.random() * 100), function(data){
//your code
}).done(function( data ) {
window.location.reload();
});
写在done部分的函数将在完成main函数的所有代码后执行
我想出了一个我最初没有计划的方向。我意识到,一旦我将用于版本控制的 RNG 添加到我的 .json 文件中,我实际上就不需要刷新页面了。我正在使用迭代循环,所以一旦循环完成,它就会返回顶部,并重新打开 info.json
。我的 RNG 看起来像这样:
$.getJSON('info.json?ver=' + Math.floor(Math.random() * 100) + '.' + Math.floor(Math.random() * 100), function(data){
//code here
}
这意味着每次计算 $.getJSON
时,它都会查看与以前不同的版本号,这会强制服务器检查和下载,从而使文件中的内容更新到它们的屏幕上自己的。网络资源如下所示:
info.json?ver=1.23
info.json?ver=2.42
info.json?ver=1.15
绝对不是我正在寻找的解决方案,但它实际上是比我的问题可能提出的更好的解决方案。
我正在为我工作的公司编写新闻显示,我试图让页面在遍历 JSON 数组的整个长度后刷新。目前一切正常,但我不完全确定刷新命令的去向。目前它所在的位置没有执行。这是我的相关代码:
var i = 0,
d = null,
x = null,
interval = 3000;
console.log('welcome');
$(document).ready(function(){
fetch();
console.log('fetching');
});
function fetch(){
// get the data *once* when the page loads
$.getJSON('info.json?ver=' + Math.floor(Math.random() * 100), function(data){
// store the data in a global variable 'd'
d = data[0];
console.log('results');
console.log(data);
// create a recurring call to update()
x = setInterval(function(){
update()
}, interval);
});
}
function update(){
console.log('update starting');
// if there isn't an array element, reset to the first once
if (d && !d[i]){
console.log('got the D');
clearInterval(x);
i = 0;
fetch();
return;
if(d[i] >= d.length){
// refresh the window if the variable is longer than the array
console.log('refreshing');
window.location.reload();
}
}
// remove the previous items from the page
$('ul').empty();
// add the next item to the page
$('ul').append(
'<li>' + d[i]['news']
+ '</li>'
);
// increment for the next iteration
i++;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='news'>
<ul></ul>
</div>
如果我理解你的问题,你只需要知道你的重新加载函数在哪里是正确的?
好吧 window.location.reload();
$.getJSON('info.json?ver=' + Math.floor(Math.random() * 100), function(data){
//your code
}).done(function( data ) {
window.location.reload();
});
写在done部分的函数将在完成main函数的所有代码后执行
我想出了一个我最初没有计划的方向。我意识到,一旦我将用于版本控制的 RNG 添加到我的 .json 文件中,我实际上就不需要刷新页面了。我正在使用迭代循环,所以一旦循环完成,它就会返回顶部,并重新打开 info.json
。我的 RNG 看起来像这样:
$.getJSON('info.json?ver=' + Math.floor(Math.random() * 100) + '.' + Math.floor(Math.random() * 100), function(data){
//code here
}
这意味着每次计算 $.getJSON
时,它都会查看与以前不同的版本号,这会强制服务器检查和下载,从而使文件中的内容更新到它们的屏幕上自己的。网络资源如下所示:
info.json?ver=1.23
info.json?ver=2.42
info.json?ver=1.15
绝对不是我正在寻找的解决方案,但它实际上是比我的问题可能提出的更好的解决方案。