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中exports与module.exports的区别详细介绍
Jan 14 NodeJs
NodeJS的url截取模块url-extract的使用实例
Nov 18 NodeJs
nodeJS删除文件方法示例
Dec 25 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
NodeJS测试框架mocha入门教程
Mar 28 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
详解使用vscode+es6写nodejs服务端调试配置
Sep 21 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
Nodejs让异步变成同步的方法
Mar 02 NodeJs
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
Nov 18 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
PHP4与PHP5的时间格式问题
2008/02/17 PHP
PHP投票系统防刷票判断流程分析
2012/02/04 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
JavaScript 页面编码与浏览器类型判断代码
2010/06/03 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
jQuery ajax提交Form表单实例(附demo源码)
2016/04/06 Javascript
Angularjs的Controller间通信机制实例分析
2016/11/07 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
python基础教程之Hello World!
2014/08/29 Python
使用httplib模块来制作Python下HTTP客户端的方法
2015/06/19 Python
python Django模板的使用方法
2016/01/14 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
python 除法保留两位小数点的方法
2018/07/16 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
Python grpc超时机制代码示例
2020/09/14 Python
世界最大的海报和艺术印刷商店:AllPosters.com
2017/02/01 全球购物
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
Android interview questions
2016/12/25 面试题
UNIX文件系统分类
2014/11/11 面试题
集体婚礼证婚词
2014/01/13 职场文书
临床医师个人自我评价
2014/04/06 职场文书
科技之星事迹材料
2014/06/02 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
解除劳动合同证明书
2014/09/26 职场文书
学生会部长竞选稿
2015/11/19 职场文书
Python基础之元类详解
2021/04/29 Python