处理表单get提交
这里需要使用一个新的模块url
模块,专门用来解析url的
基本使用:
var url=require('url')
var obj=url.parse('https://www.bilibili.com/video/BV1Ns411N7HU?t=9&p=31')
console.log(obj)
可以看出返回的结果是一个对象
为了方便获取query中的参数,给parse()
方法添加第二个参数true
,将query转为数组
var obj=url.parse('https://www.bilibili.com/video/BV1Ns411N7HU?t=9&p=31',true)
实例:接收form表单提交的数据
form.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form method="get" action="getInfo">
用户名:<input type="text" name="username" /><br />
年 龄:<input type="text" name="age" /> <br />
<input type="submit" value="提交" />
</form>
</body>
</html>
form.js
var http = require('http')
var fs = require('fs')
var url = require('url')
http.createServer(function(request, response) {
//将路径解析为对象
var parseObj = url.parse(request.url, true)
//单独获取不包含查询字符串的路径部分(该路径不包含?之后的内容)
var pathname = parseObj.pathname
if (pathname === '/') {
fs.readFile('./form.html', function(err, data) {
if (err) {
return response.end('404 Not Find')
} else {
response.end(data)
}
})
} else if (pathname === '/getInfo') { //接收表单的提交
response.setHeader('Content-Type', 'text/palin; charset=utf-8');
response.end(JSON.stringify(parseObj.query))
}
}).listen(5000, function() {
console.log("server is running....")
})
重定向
如何通过服务器让客户端重定向?
- 状态码设置为302,临时重定向
response.statusCode
- 在响应头中通过Location告诉客户端往那重定向
response.setHeader
如果客户端发现收到服务器的响应的状态码是302,就会自动去响应头中去找Location,然后对该地址发起新的请求,这样就能看到客户端自动跳转
response.statusCode = 302
response.setHeader('Location', '/')
response.end()
注:
一次请求对应一次响应,响应结束这次请求也就结束。如果前面已经end结束了,就不会响应其它数据(是不会响应数据,还会继续执行下面的代码)