每15秒读取一个文本文件的内容
Read the contents of a text file every 15 seconds
我在一个音乐网站工作:我在服务器上有一个文本文件,其中包含当前播放的歌曲的名称。我希望每隔15秒读取一次文本文件,并更改我网站上显示的文本,没有刷新。
现在,使用一点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>
您可以将想要执行repeatedly
的代码放在函数中,并将该函数传递给setTimeout
。setTimeout的第二个参数将在millisecond
中取interval。
在这里使用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>
您应该能够像这样将示例封装在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);
});
创建一个函数并使用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);
});
为什么不试试呢?
window.setInterval(function(){
/// call your function here
}, 15000);
使用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)
}
除了根据每个人的答案使用setInterval
之外,还可以通过请求确保文件没有被缓存:
jQuery.get("http://......./NowPlaying.txt?t="+new Date().getTime(), function....);
相关文章:
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- Sails.js:同时发布文本输入和一个文件
- 使用不带文本文件的OpenLayers显示POI
- 从单独的html文件预览Javascript文本
- 使用JSON文件中的变量(字符串)填充文本区域
- 使用javascript从文本文件中获取值
- 从javascript中的文本文件中获取值
- 在移动浏览器上显示大型文本文件
- 搜索文本文件并附加到表中
- 将文本文件加载到javascript中
- Angular http.get没有'我不喜欢在开头和结尾加方括号的文本文件
- 一个javascript实现base64图像编码并将结果写入文本文件
- 用javascript读取文本文件的第一行
- 从文本文件js中读取列表
- 使用JavaScript将压缩文本文件加载到字符串中
- 可以设置输入类型=文件的文本框的高度
- 数组在手动写入时有效,但从文本文件加载时无效
- 在浏览器中打开文本文件-服务器上出现错误
- 使用SeleniumWebdriver将文本复制到文件时出现编译错误的解决方案
- 使用 d3 或 ajax 读取本地文件文本(制表符分隔值)会导致 Firefox 开发控制台中的语法错误