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 npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
基于promise.js实现nodejs的promises库
Jul 06 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
浅析nodejs实现Websocket的数据接收与发送
Nov 19 NodeJs
NodeJS和BootStrap分页效果的实现代码
Nov 07 NodeJs
nodeJs链接Mysql做增删改查的简单操作
Feb 04 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 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中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
PHP提高编程效率的20个要点
2015/09/23 PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
2016/01/09 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
jquery重新播放css动画所遇问题解决
2013/08/21 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
javascript获取当前的时间戳的方法汇总
2015/07/26 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
Python用threading实现多线程详解
2017/02/03 Python
python中关于for循环的碎碎念
2017/06/30 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
python实现换位加密算法的示例
2018/10/14 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
python实现淘宝秒杀脚本
2020/06/23 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
python绘制雪景图
2019/12/16 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
维也纳通行证:Vienna PASS
2019/07/18 全球购物
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
往来会计岗位职责
2013/12/19 职场文书
办公室前台岗位职责
2014/01/04 职场文书
中层干部竞聘演讲稿
2014/05/15 职场文书
python lambda 表达式形式分析
2022/04/03 Python