[英]How to send a JSON response and redirect to some html page after success in Node.js using express?
[英]Express send new HTML page without redirect
我目前有一个登录页面,其中包含node.js + express + socket.io。 有没有一种方法可以在不重定向客户端的情况下向客户端发送新的HTML页面? (即留在www.dns.com和www.dns.con / home上)。 我尝试使用res.sendFile,但是客户端看不到接受新的HTML文件。
当前代码
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html'); //sets initial HTML page
});
io.on('connection', function (socket) {
socket.on('login', function (username) {
if (username === 'user')
{
console.log("Login Sucessful");
app.get('/', function (req, res) {
res.sendFile(__dirname + '/main.html'); //doesn't change HTML page
});
}
});
});
http.listen(80, function () {
console.log('listening on port 80');
});
通过运行
app.get('/', function (req, res) {
res.sendFile(__dirname + '/main.html'); //doesn't change HTML page
});
在那里面,如果您只是为将来的请求添加了另一条路线,那不是您想要的。 在其他许多情况下也不是正确的选择。
您可以通过套接字发送HTML文件的内容,然后在客户端进行处理。 有一个javascript函数,可以用给定的HTML内容替换整个页面。
或更有效的方法是,仅发送文件的路径,然后在客户端通过ajax调用加载文件,然后将整个页面内容替换为ajax调用的结果。
io.on('connection', function (socket) {
socket.on('login', function (username) {
if (username === 'user')
{
console.log("Login Sucessful");
socket.send('replace-page', 'main.html'); // send the file name
}
});
});
在客户端,具有侦听replace-page
事件的功能。 根据您使用的技术,您可以加载内容并以多种方式替换页面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.