如何服务器端设置使浏览器端页面跳转?
解决办法: 设置响应报文头,通过响应报文头告诉浏览器,执行一次页面跳转操作.
示例如下
server.js:
var http = require('http');
var fs = require('fs');
var path = require('path');
http.createServer({
if (req.url === '/' || req.url === '/index' && req.method === 'get') {
// 读取index.html
res.render(path.join(__dirname, 'views', 'index.html'));
} else if (req.url.startsWith('/add') && req.method === 'get') {
// 先要获取用户提交的数据
// 要获取用户get提交的数据,可以通过req.url直接获取这些数据,但是需要自己截取字符串,不太方便
// 如果使用到url模块,可以将get提交的数据解析成一个json对象
console.log(urlObj.query.title,urlObj.query.text)
// 读取data.json文件中的数据,并将读取到的数据转换为一个数组
fs.readFile(path.join(__dirname, 'data', 'data.json'), 'utf8', function (err, data) {
// 因为第一次访问网站, data.json文件本身就不存在,所以会报错; 并不是网站错误,所以需要处理一下
if (err && err.code !== 'ENOENT') {
throw err;
}
// 如果读取到数据了,那么就把读取到的数据data,转换为list数组
// 如果没有读取到数据,那么就把[]转换为数组
var list = JSON.parse(data || '[]');
// 先把用户提交的数据保存到data.json文件中
list.push(urlObj.query);
// 把list数组中的数据写入到data.json文件中
fs.writeFile(path.join(__dirname, 'data', 'data.json'), JSON.stringify(list), function (err) {
if (err) {
throw err;
}
// 设置响应报文头,通过响应报文头告诉浏览器,执行一次页面跳转操作
res.statusCode = 302; // 300开头,可以去node的http模块上查找对应的状态码
res.statusMessage = 'Found'; // 同上查找
res.setHeader('Location', '/'); // 跳转到首页,重定向
res.end();
});
})
}
}).listen(8080, function () {
console.log('http://localhost:8080')
})
运行服务器node server.js
后,
在相关的页面页面输入对应的信息提交,或者也可以直接在url地址栏输入"localhost:8080/add?title=123&text=aaaaaaaaaaa
",
然后观察浏览器页面是否会跳转;还有data.json文件是否会生成,然后文件中有没有你输入的信息.