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学习笔记之FS文件模块
Jan 13 NodeJs
Nodejs实现批量下载妹纸图
May 28 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
NodeJS自定义模块写法(详解)
Jun 27 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 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
我的论坛源代码(六)
2006/10/09 PHP
php中一个有意思的日期逻辑处理
2012/03/25 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
2016/12/09 PHP
laravel 事件/监听器实例代码
2019/04/12 PHP
基于jQuery的js分页代码
2010/06/10 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
2014/10/08 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
jQuery事件对象总结
2016/10/17 Javascript
js放大镜放大购物图片效果
2017/01/18 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
Vue清除定时器setInterval优化方案分享
2020/07/21 Javascript
Javascript如何递归遍历本地文件夹
2020/08/06 Javascript
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
python之wxPython应用实例
2014/09/28 Python
Python多线程编程(八):使用Event实现线程间通信
2015/04/05 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
python类的继承实例详解
2017/03/30 Python
python使用xpath中遇到:到底是什么?
2018/01/04 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
《小草和大树》教学反思
2014/02/16 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
团结主题班会
2015/08/13 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
一篇文章带你复习java知识点
2021/06/28 Java/Android