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>