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的模板视图机制分析
Jul 19 NodeJs
使用forever管理nodejs应用教程
Jun 03 NodeJs
nodejs实现的一个简单聊天室功能分享
Dec 06 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
详解nodeJS中读写文件方法的区别
Mar 06 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
NodeJs的fs读写删除移动监听
Apr 28 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 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中使用循环实现的金字塔图形
2014/11/08 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
TypeScript中的方法重载详解
2019/04/12 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
python 接口_从协议到抽象基类详解
2017/08/24 Python
python去除字符串中的换行符
2017/10/11 Python
python连接数据库的方法
2017/10/19 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
基于FME使用Python过程图解
2020/05/13 Python
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
销售工作人员的自我评价分享
2013/11/10 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
个人简历自我评价范文
2014/02/04 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android
Windows7下FTP搭建图文教程
2022/08/05 Servers