Nodejs之http的表单提交


Posted in NodeJs onJuly 07, 2017

之前介绍了http模块的请求与响应的过程,也介绍了TCP协议的客户端与服务端的数据传输,http协议是TCP上层协议。这里创建了一个简单的web服务器,并对提交表单数据进行处理,根据了不起的Node.js一书总结。

POST方法提交表单数据

之前也总结过,向服务器提交数据需要使用POST方法,GET方法的请求信息都在查询字符串中,没有请求体,而POST方法的传输的数据都在请求体中,故提交表单数据时需要使用POST方法。

req是请求信息,req.url表示请求的地址,当服务器运行之后,req请求的网址为127.0.0.1:3000,此时req.url为‘/',则返回的是一串表单数据,在表单数据中设置了method是post,action是‘/url',表面提交数据的方式是POST,将数据提交的地址为127.0.0.1:3000/url,而提交之后要获取新的页面即127.0.0.1:3000/url,此时req.url为‘/url',故显示的另一个页面。

//提交表单数据
 var http=require('http');
 var querystring=require('querystring');
 
 var server=http.createServer(function (req,res) {
 //req.url不同则返回的页面不同
 if('/'==req.url){
  res.writeHead(200,{'Content-Type':'text/html'});
  res.write([
  '<form method="post" action="/url">',
  '<h1>My Form</h1>',
  '<fieldset>',
  '<label>Personal Information</label>',
  '<p>What is your name?</p>',
  '<input type="text" name="name">',
  '<button>submit</button>',
  '</form>'
  ].join(''));
  res.end();
 }else if('/url'==req.url&&req.method=='POST'){
  var reqBody='';
  req.on('data',function (data) {
  reqBody += data;
  });
  req.on('end',function () {//用于数据接收完成后再获取
  res.writeHead(200,{'Content-Type':'text/html'});
  res.write('you have sent a '+req.method+' request\n');
  res.write('<p>Content-Type:'+req.headers['content-type']+'</p>'
   +'<p>Data:your name is '+querystring.parse(reqBody).name+'</p>');
  res.end();
  })
 }else{
  res.writeHead(404);
  res.write('Not Found');
  res.end();
 }
 }).listen(3000,function () {
 console.log('server is listening 3000');
 });

提交之后,需要获取请求信息的请求体,因为POST方法中信息都在请求体中,用req绑定data事件获取数据,这里需要注意的是必须得在数据接收完成后再对数据进行操作,即必须绑定end事件监听请求信息是否传输完成。

querystring是查询字符串模块,用于对查询字符串的解析,parse方法将查询字符串解析成一个对象。在git中运行服务器,得到页面是这样的:

Nodejs之http的表单提交

提交数据后:

Nodejs之http的表单提交

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
NodeJs中的非阻塞方法介绍
Jun 05 NodeJs
解析NodeJs的调试方法
Dec 11 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
nodejs入门教程四:URL相关模块用法分析
Apr 24 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
原生nodejs使用websocket代码分享
Apr 07 NodeJs
详解redis在nodejs中的应用
May 02 NodeJs
nodeJs爬虫的技术点总结
May 13 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
Nodejs核心模块之net和http的使用详解
Apr 02 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
Jul 05 #NodeJs
nodejs模块学习之connect解析
Jul 05 #NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 #NodeJs
nodejs 子进程正确的打开方式
Jul 03 #NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 #NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 #NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 #NodeJs
You might like
使用session判断用户登录用户权限(超简单)
2013/06/08 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
PHP中的多种加密技术及代码示例解析
2016/10/20 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
PHP模型Model类封装数据库操作示例
2019/03/14 PHP
Prototype1.5 rc2版指南最后一篇之Position
2007/01/10 Javascript
js获取当前日期代码适用于网页头部
2013/06/27 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
JavaScript正则表达式中的ignoreCase属性使用详解
2015/06/16 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
3分钟掌握常用的JS操作JSON方法总结
2017/04/25 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
解决vue 中 echart 在子组件中只显示一次的问题
2018/08/07 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
Python装饰器用法实例总结
2018/02/07 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
python实现图片彩色转化为素描
2019/01/15 Python
Python 70行代码实现简单算式计算器解析
2019/08/30 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
2019/11/07 Python
python多线程使用方法实例详解
2019/12/30 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
python与idea的集成的实现
2020/11/20 Python
澳大利亚排名第一的露营和户外设备在线零售商:Outbax
2020/05/06 全球购物
全国道德模范事迹
2014/02/01 职场文书
2014年教师节演讲稿范文
2014/09/10 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
小学国庆节活动总结
2015/03/23 职场文书
《实心球》教学反思
2016/02/23 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书