欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

(八) Node的POST和GET获取数据的方法

程序员文章站 2024-01-30 10:56:10
...

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>