Node的POST和GET获取数据的方法
- 第一步必须要加载querystring模块
- 第二部路径分离里面千万注意判断的是pathname
- 第三步from表单里面必须写name
- 第四部要是get直接就是querystring.parse(urlobj.query)
- 要是get请求必须放到缓存池,然后利用end结束方法来调用
具体见代码
var http = require('http'); //加载HTTP模块
var server = http.createServer(); //创建对象
var fs = require("fs"); //加载文件模块
var url = require("url"); //加载url模块
var querystring = require('querystring'); //增加数据转义模块,很少用了现在都利用URL的第二个参数
server.listen(8080,'127.0.0.1');
var htmldir = __dirname+"/html/";
server.on('request',function(req,res){
var urlobj = url.parse(req.url); //获取到路径
//得到查询部分,由于写了true,那么就是一个对象
var queryObj = url.parse(req.url,true).query; //获取到GET请求传进来的参数,JSON包格式
//var name = queryObj.name ; //获取到名字
//var age = queryObj.age; //获取到年龄
//var sex = queryObj.sex; //获取到性别
switch(urlobj.pathname) //这里必须判断的路径name别的不行
{
case "/":
openFile(htmldir+"index.html",res);
break;
case "/login":
openFile(htmldir+"login.html",res);
break;
case '/login/check':
// console.log(req.method);
//console.log(urlStr);
//要是grt就这样直接转化数据就行
//console.log( querystring.parse(urlobj.query) );
//下面要是post就调用
if (req.method.toUpperCase() == 'POST') {
var str = '';
req.addEventListener('data', function(chunk) {
str += chunk;
})
req.addEventListener('end', function() {
console.log(str);
//两种方法
// console.log( querystring.parse( str ) );
console.log( queryObj);
})
}
break;
default:
openFile(htmldir+"404.html",res);
break;
}
})
function openFile(filepath,res)
{
fs.readFile(filepath,function(err,data){
if(err)
{
res.writeHead(404,{'content-type':'text/html;charset=utf-8'});
res.write("<h1>页面没找到</h1>");
res.end();
}else
{
res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
res.write(data);
res.end();
}
})
}
对应的html login文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="/login/check" method="post">
<input type="text" name="username"/>
<input type="password" name="password"/>
<input type="submit" value="提交"/>
</form>
</body>
</html>