如何在服务器端设置使浏览器端页面跳转

如何服务器端设置使浏览器端页面跳转?

解决办法: 设置响应报文头,通过响应报文头告诉浏览器,执行一次页面跳转操作.

示例如下
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文件是否会生成,然后文件中有没有你输入的信息.

猜你喜欢

转载自blog.csdn.net/Calla_Lj/article/details/88954798
今日推荐