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 Express框架中处理404页面一个方式
May 28 NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
Nodejs Stream 数据流使用手册
Apr 17 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
学习 NodeJS 第八天:Socket 通讯实例
Dec 21 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 NodeJs
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
May 15 NodeJs
Nodejs中的require函数的具体使用方法
Apr 02 NodeJs
NodeJs crypto加密制作token的实现代码
Nov 15 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
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
PHPMailer发送邮件
2016/12/28 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
2014/04/25 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
2018/01/17 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
详解js实时获取并显示当前时间的方法
2019/05/10 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
Python常用随机数与随机字符串方法实例
2015/04/09 Python
Python中表示字符串的三种方法
2017/09/06 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
雅诗兰黛(Estee Lauder)英国官方网站:世界顶级化妆品牌
2016/12/29 全球购物
德国珠宝和手表在线商店:VALMANO
2019/03/24 全球购物
Moss Bros官网:英国排名第一的西装店
2020/02/26 全球购物
毕业生动漫设计求职信
2013/10/11 职场文书
自我鉴定三原则
2014/01/13 职场文书
教师申诉制度
2014/01/29 职场文书
优质服务演讲稿
2014/05/14 职场文书
个人存款证明书
2014/10/18 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
自己搭建resnet18网络并加载torchvision自带权重的操作
2021/05/13 Python
Python中requests库的用法详解
2022/06/05 Python
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python