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 URL模块操作URL相关方法介绍
Mar 03 NodeJs
NodeJS远程代码执行
Aug 28 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
解决nodejs的npm命令无反应的问题
May 17 NodeJs
NodeJS模块与ES6模块系统语法及注意点详解
Jan 04 NodeJs
详解nodejs http请求相关总结
Mar 31 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 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
DedeCms模板安装/制作概述
2007/03/11 PHP
php中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
php 学习资料零碎东西
2010/12/04 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
PHP程序员必须清楚的问题汇总
2014/12/18 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
对google个性主页的拖拽效果的js的完整注释[转]
2007/04/10 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
2018/04/20 Javascript
jQuery实现获取选中复选框的值实例详解
2018/06/28 jQuery
如何测量vue应用运行时的性能
2019/06/21 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
[14:51]DOTA2 HEROS教学视频教你分分钟做大人-卓尔游侠
2014/06/13 DOTA
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
Python中标准库OS的常用方法总结大全
2017/07/19 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
PyQt5响应回车事件的方法
2019/06/25 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
管理专员自荐信
2014/01/26 职场文书
技校毕业生自荐书
2014/05/23 职场文书
大四毕业生自荐书
2014/07/05 职场文书
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang
python自动化八大定位元素讲解
2021/07/09 Python
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL