使用AJAX和jQuery从数据库中获取实时分数

时间:2017-06-12 07:39:57

标签: javascript jquery ajax

所以我有一个数据库,在得到一个匹配后得到更新。

现在我能够在我的路线上获取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")
        });
});

1 个答案:

答案 0 :(得分:1)

有多种方法可以做到这一点,最简单的方法是使用long polling,但它也是最无效的方法。

很简单的例子:

var seconds = 5;
setInterval(function runner() {
    // run your ajax call here
    var result = callAjax();
}, seconds * 1000);

更好的方法是使用websockets,当得分在服务器端更新时,您将事件推送到客户端。