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

标签 javascript jquery ajax

所以我有一个数据库,在获得比赛得分后会更新。

现在我可以向我的路线发出ajax get请求,以从$(document).ready(function()上的数据库获取最新分数,并更改我的html以显示分数,但它是静态的并且不会获取更新。 所以我的问题是如何在循环中发出这个ajax请求。现在用户必须刷新才能再次发出请求并获取更新的最新分数。

我在express框架上使用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")
        });
});

最佳答案

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

非常简单的例子:

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

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

关于javascript - 使用 AJAX 和 jQuery 从数据库中获取实时比分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44493870/

相关文章:

javascript - 如何使用 sha256 哈希生成 0 到 1 之间的随机数

jquery - 如何检查href是否包含变量

javascript - Ajax返回数组在PHP中显示[object Object],[object Object]

javascript - 将 Node.js GET/POST 请求更改为 Ajax

javascript - 如何在 JavaScript 中在运行时获取对象/数组?

javascript - 如何在 javascript 中使用此 javascript new Date() 格式准确显示日期示例格式 "15-Apr-2012 10.12 AM"

php - 如何使用 yii2 -bootstrap 扩展将模态添加到 yii2 中的导航栏?

jquery - masonry 和重叠的 div

javascript - 固定菜单项

javascript - 当用户使用浏览器的后退按钮时如何删除 css 类