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 相关文章推荐
抛弃Nginx使用nodejs做反向代理服务器
Jul 17 NodeJs
Nodejs极简入门教程(三):进程
Oct 27 NodeJs
详谈nodejs异步编程
Dec 04 NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 NodeJs
详解nodejs 文本操作模块-fs模块(五)
Dec 23 NodeJs
windows 下安装nodejs 环境变量设置
Feb 02 NodeJs
NodeJs模拟登陆正方教务
Apr 28 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodejs dgram模块广播+组播的实现示例
Nov 04 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
打造计数器DIY三步曲(下)
2006/10/09 PHP
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
Destoon模板制作简明教程
2014/06/20 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
php生成图片验证码的方法
2016/04/15 PHP
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
Jquery 过滤器(first,last,not,even,odd)的使用
2014/01/22 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
JavaScript检测浏览器cookie是否已经启动的方法
2015/02/27 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
你可能不知道的CORS跨域资源共享
2019/03/13 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
Python格式化压缩后的JS文件的方法
2015/03/05 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
python 接口返回的json字符串实例
2018/03/27 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
python3多线程知识点总结
2019/09/26 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
毕业生精彩的自我评价分享
2013/10/06 职场文书
怎么写好自荐信
2013/10/30 职场文书
世界读书日的活动方案
2014/08/20 职场文书
2014年材料员工作总结
2014/11/19 职场文书
个性发展自我评价2015
2015/03/09 职场文书