我正在音乐网站上工作: 我在服务器上有一个文本文件,其中包含当前播放歌曲的名称。 我想每隔十五秒阅读一次文本文件,并更改我网站上显示的文字, 没有刷新。
现在,使用一点点jQuery和javascript,我实际上已经达到了第一次读取和显示文件的程度,但它不会刷新。我尝试过各种setInterval函数,但对于我的生活,我无法使这部分工作。 任何帮助将不胜感激。
这就是我所拥有的:
<script type="text/javascript">
$(document).ready(function() {
jQuery.get('http://www.XXXXX.com/nowplaying/NowPlaying.txt', function(data) {
var myvar = data;
var parts = myvar.split(/\n/);
var songtitle = parts[0];
var songartist = parts[1];
var songalbum = parts[2];
var songtime = parts[3];
$('#songtitleholder').html(songtitle);
$('#songartistholder').html(songartist);
$('#songalbumholder').html(songalbum);
});
});
</script>
答案 0 :(得分:6)
您可以将要执行的代码repeatedly
放入函数中,并在setTimeout
中传递该函数。 setTimeout的第二个参数将采用millisecond
中的间隔。
在这里使用setTimeout IMO在这里更多appropriate
因为它将排除发送请求和接收响应所花费的时间。它将send request every 5 second after receiving response.
<script type="text/javascript">
$(document).ready(function() {
function functionToLoadFile(){
jQuery.get('http://www.XXXXX.com/nowplaying/NowPlaying.txt', function(data) {
var myvar = data;
var parts = myvar.split(/\n/);
var songtitle = parts[0];
var songartist = parts[1];
var songalbum = parts[2];
var songtime = parts[3];
$('#songtitleholder').html(songtitle);
$('#songartistholder').html(songartist);
$('#songalbumholder').html(songalbum);
setTimeout(functionToLoadFile, 5000);
});
}
setTimeout(functionToLoadFile, 10);
});
</script>
答案 1 :(得分:3)
您应该能够将您的示例包装在setInterval调用中,如下所示:
$(document).ready(function() {
setInterval( function(){
jQuery.get('http://www.XXXXX.com/nowplaying/NowPlaying.txt', function(data) {
var myvar = data;
var parts = myvar.split(/\n/);
var songtitle = parts[0];
var songartist = parts[1];
var songalbum = parts[2];
var songtime = parts[3];
$('#songtitleholder').html(songtitle);
$('#songartistholder').html(songartist);
$('#songalbumholder').html(songalbum);
});
}, 15000);
});
答案 2 :(得分:3)
创建一个函数并使用setInterval
调用它(您可能希望为URL添加时间戳,以便结果不会缓存)
$(document).ready(function() {
function refresh(){
jQuery.get('http://www.XXXXX.com/nowplaying/NowPlaying.txt', { "t": $.now() }, function(data) {
var myvar = data,
parts = myvar.split(/\n/),
songtitle = parts[0],
songartist = parts[1],
songalbum = parts[2],
songtime = parts[3];
$('#songtitleholder').html(songtitle);
$('#songartistholder').html(songartist);
$('#songalbumholder').html(songalbum);
});
}
setInterval(refresh, 15000);
});
答案 3 :(得分:1)
使用setTimeout
的解决方案。当窗口在切换浏览器标签时失去焦点时,setInterval
往往会排队。
$(document).ready(function() {
getData();
});
function getData() {
setTimeout(function() {
jQuery.get('http://www.XXXXX.com/nowplaying/NowPlaying.txt', function(data) {
var myvar = data;
var parts = myvar.split(/\n/);
var songtitle = parts[0];
var songartist = parts[1];
var songalbum = parts[2];
var songtime = parts[3];
$('#songtitleholder').html(songtitle);
$('#songartistholder').html(songartist);
$('#songalbumholder').html(songalbum);
/* repeat getData*/
getData();
});
}, 15000)
}
答案 4 :(得分:0)
为什么不尝试这个?
window.setInterval(function(){
/// call your function here
}, 15000);
答案 5 :(得分:0)
除了根据其他人的答案使用setInterval
之外,请确保通过请求缓存文件:
jQuery.get("http://......./NowPlaying.txt?t="+new Date().getTime(), function....);