所以我有一个数据库,在得到一个匹配后得到更新。
现在我能够在我的路线上获取ajax get请求,以便从$(document).ready(function()获取数据库的最新分数,并将我的html更改为显示分数,但它是静态的,不会得到更新。 所以我的问题是如何在循环中制作这个ajax请求。现在,用户必须刷新才能再次发出请求并获得更新的最新分数。
我在快速框架上使用mongoose,mongodb,nodejs,在脚本上使用jquery。
这是我用于处理ajax请求的nodejs路由,它返回匹配数据的json
router.get('/matchData',function(req,res){
Match.getMatchData(function(err,match){
if(err) throw err;
res.send(match);
});
});
这是我的AJAX脚本。
$(document).ready(function(){
$.ajax({
type: 'GET',
url: 'http://localhost:3000/matchData',
dataType: 'json'
})
.done(function(data) {
$('.team1').text(data.title);
$('.team1odds').text(data.values.t1odds);
$('.team1probability').text(data.values.t1probability);
$('.team1score').text(data.values.t1predict);
$('.team2').text(data.title);
$('.team2odds').text(data.values.t2odds);
$('.team2probability').text(data.values.t2probability);
$('.team2score').text(data.values.t2predict);
})
.fail(function() {
alert("Ajax failed to fetch data")
});
});
答案 0 :(得分:1)
有多种方法可以做到这一点,最简单的方法是使用long polling,但它也是最无效的方法。
很简单的例子:
var seconds = 5;
setInterval(function runner() {
// run your ajax call here
var result = callAjax();
}, seconds * 1000);
更好的方法是使用websockets,当得分在服务器端更新时,您将事件推送到客户端。