1. get请求参数接收

我们简单举一个需要接收参数的例子

如果有个查找功能,查找关键词需要从url里接收,http://localhost:8000/search?keyword=地球。通过前面的进阶3教程《nodejs进阶(3)—路由处理》重介绍的url模块,我们知道接收方法如下这样写

 //----------------6_param------------------------------------      
var http = require('http');                          
var url = require('url');          
var router = require('./router');        
http.createServer(function (request, response) {                          
    if(request.url!=="/favicon.ico"){  //清除第2此访问              
        var rdata  =  url.parse(request.url,true).query;   //获取参数
    if(rdata['keyword']!=undefined){  
            console.log(rdata['keyword']);      
        }       
        console.log("server执行完毕");   
response.end();  
    }                          
}).listen(8000);                          
console.log('Server running  at  http://127.0.0.1:8000/');       

那么在我们的控制台里会输出查询此“地球”。

get请求我们都可以通过上述这种方式获取参数。

2. post请求参数接收

如果是post请求,这些参数不是通过url传递的,是包含在request请求体中。请求体里的流需要以事件形式进行接收

req.on('data',  function(chunk){//通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中

post  +=  chunk;

});

我们新建一个页面,其中有一个post请求

 <html>
<head>
</head>
<body>
登录:
<p>这是一个段落</p>
<h1>样式1</h1>
<form action="/submitLogin" method="post">
用户名:<input value="" name="name">
密码:<input value="" name="pwd">
<input type="submit" value="提交">
</form>
<!--img src="./showImg"></img-->
</body>
<html>

我们请求login,有两个输入项name和pwd,当我们输入值后点击提交,会发post请求到http://localhost:8000/submitLogin

我们对router.js进行扩展,添加submitLogin处理方法。

之前需要引入'querystring',该模块用于实现URL参数字符串与参数对象的互相转换。

大家需要了解学习两个常用的方法

1)require('querystring').parse("name=eee&pwd=123")  结果:Object {name: "eee", pwd: "123"}

2)require('querystring').stringify({name:'eee',pwd:'123'})  结果:"name=eee&pwd=123"

 //-----------------router.js--------------------------------
var file = require('./models/file');
var  url  =  require('url');      
var  querystring  =  require('querystring');  //post需导入     
module.exports={
    login:function(req,res){
res.writeHead(200,  {'Content-Type':'text/html'});    
        var data  =  file.readfileSync('./views/login.html');      
        res.write(data);  
        res.end();      
    },
register:function(req,res){
        var data=file.readfileSync('./views/register.html');//使用同步读取
res.write(data);
res.end();
    },
showImg:function(req,res){
        file.readImg('./imgs/dog.jpg',res);//使用同步读取
    },
submitLogin:function(req,res){
var  post  =  '';  //定义了一个post变量,用于暂存请求体的信息      
    req.on('data',  function(chunk){//通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中      
        post  +=  chunk;      
    });      
    //-------注意异步-------------      
    req.on('end',  function(){   //在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。      
        post  =  querystring.parse(post);      
        console.log('name:'+post['name']+'\n');        
        console.log('pwd:'+post['pwd']+'\n');
if(post['name']=="fff"&&post['pwd']=="123"){//简单写登录成功的匹配
res.write("登录成功!")
}else{
res.write("用户名密码不正确")
}
res.end();  
    });    
}
}

当我们想login页面输入用户名和密码参数时,如果输入fff和123  这时候跳转到loginSubmit输出登录成功!

如果输入其他值跳转后会提示:用户名密码不正确

最新文章

  1. 关于安卓APP的启动界面
  2. 掌握Thinkphp3.2.0----模型初步
  3. javascript基础知识-类和模块
  4. 关于read only file system问题解决方案
  5. Shell脚本获得变量值作为新变量一部分的值
  6. POJ 2352 【树状数组】
  7. Object.keys、Object.getOwnPropertyNames区别
  8. Flask 快速使用 进阶—— (2)
  9. linux下编译protobuf(可以编译成pb.go)
  10. 23.QT记事本
  11. neutron是一个超级脚本的理解
  12. Blinker 后台数据分析
  13. Linux内核分析——第四周学习笔记20135308
  14. OO第四次作业-对前三次作业总结
  15. 打劫房屋 &#183; House Robber
  16. Linux常用命令之tr
  17. golang 时间戳 时间格式化 获取当前时间 timestamp 计算时间差
  18. iOS 修改状态栏颜色
  19. 第一个贴上XMT标签的Hadoop程序
  20. 安装gitlab-runner

热门文章

  1. jQuery的61种选择器
  2. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
  3. 【深入浅出jQuery】源码浅析--整体架构
  4. sonn_game网站开发01:写在最前面
  5. PC分配盘符的时候发现==》RPC盘符不可用
  6. ExtJS 4.2 业务开发(一)主页搭建
  7. Python标准库--typing
  8. 让kindeditor显示高亮代码
  9. 谈谈一些有趣的CSS题目(八)-- 纯CSS的导航栏Tab切换方案
  10. C# 对象实例化 用json保存 泛型类 可以很方便的保存程序设置