使用Express和EJS在Node.js中重新加载页面
我正在尝试在底层数据模型更改时重新加载浏览器页面:
var request = require('request'); var express = require('express'); var app = express(); var bodyParser = require('body-parser'); app.set('view engine', 'ejs'); app.use(bodyParser.urlencoded({ extended: false })); var requests; app.get('/', function(req, res) { res.render('index', { requests: requests }); }); app.listen(3000);
…稍后请求数据模型更改时:
request.get('localhost:3000/', function(error, response, body) { console.log(body); });
但我的浏览器页面不刷新,除非我用我的鼠标手动点击刷新button。 我错过了什么?
编辑 :这是我的index.ejs
代码:
<!DOCTYPE html> <html> <ul> <% requests.forEach(function(match) { %> <form action="/acceptRequest" method="post" enctype="application/x-www-form-urlencoded"> <input type="text" name="id" value="<%= match.id %>"> <input type="text" name="fighter1" value="<%= match.fighter1 %>"> vs. <input type="text" name="fighter2" value="<%= match.fighter2 %>"> on <input type="text" name="fightdate" value="<%= match.date %>"> in <input type="text" name="rounds" value=""> <input type="submit" value="Submit"> </form> <br> <% }); %> </ul> </html>
重新加载html页面:
<script> location.reload(true/false); </script>
此外,只要使用nodemon而不是nodejs来运行服务器,就要重新启动服务器。
要安装nodemon:
npm install -g nodemon
运行服务器(app.js是主要的服务器文件)
nodemon apps.js
Nodemon会查找更改,并在find时重新启动服务器。
有一个叫做HTTP Referer
的东西:它是一个HTTP头域,用来标识链接到被请求资源的页面的地址。
如果你想刷新一个页面,在用户发送一个改变的请求之后,只需redirect到referer。
app.get('/someRequest', function(request, response) { // some things changed here. response.redirect(request.get('referer')); });