将数据传递到视图而不刷新浏览器

时间:2016-04-20 15:02:29

标签: javascript node.js express

我是Node的新手,我需要快速帮助。 我有一个node.js应用程序通过GET请求从另一个应用程序接收数据,如下所示:GET /api/users?data=26' - 每30个sesonds。我的节点应用程序代码如下所示:

 var express = require('express');
 var app = express();
 var port = process.env.PORT || 8080
 app.set('views', __dirname + '/views');
 app.set('view engine', 'jade');
 var router = express.Router();

 router.get('/api/users', function(req, res) {
 var query = req.param('data');
 //I need to pass data to the view without refreshing browser
 });

 app.use(router);

 app.listen(port)

我需要将数据传递给视图(我有一个模板home.jade),而无需用户刷新浏览器。因为每30秒一次请求,用户将看到数据每30秒更改一次而不刷新浏览器。我该如何做到这一点?提前谢谢。

2 个答案:

答案 0 :(得分:2)

你可以使用套接字,你不需要成为专家来实现它只是试一试

var hands = [ [2, 3, 4, 5, 7], [2, 3, 5, 9, 8], [2, 3, 4, 5, 9] ];
var values = [];
function bestHand(hands){ 
   hands.forEach(function(arr, index) {
    var temp = arr.slice();
    values[index] = parseInt(temp.sort().reverse().join(''));
   });
   var max = Math.max.apply(Math, values);
   return hands[values.indexOf(max)];
}
bestHand(hands);

这些是基础知识"功能"要使用套接字,您可以在socket.io

了解更多信息

我不习惯每隔x秒做一次ajax请求它对我不合适,看看这个SO question并决定自己哪个是你想要的最佳方法跟随。

答案 1 :(得分:0)

使用AJAX轮询。

在该模板中抛出一个脚本标记。如果你使用的是jQuery,你可以做类似的事情......

window.setInterval(function() {
  // call http server, get payload data and bind to interface
  // $.get(...) or other ajax method
}, 30 * 1000)