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中使用monk访问mongodb
Jul 06 NodeJs
提高NodeJS中SSL服务的性能
Jul 15 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
Nov 20 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
使用koa-log4管理nodeJs日志笔记的使用方法
Nov 30 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 20 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中调用JAVA
2006/10/09 PHP
php下mysql数据库操作类(改自discuz)
2010/07/03 PHP
php生成短网址示例
2014/05/05 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
python继承和抽象类的实现方法
2015/01/14 Python
python中使用序列的方法
2015/08/03 Python
详解Python网络爬虫功能的基本写法
2016/01/28 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
Python Celery多队列配置代码实例
2019/11/22 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
2021/01/23 Python
建筑经济管理专业求职信分享
2014/01/06 职场文书
和平主题的演讲稿
2014/01/12 职场文书
体育教学随笔感言
2014/02/24 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
学校搬迁方案
2014/06/15 职场文书
汽修专业自荐信
2014/07/07 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
优秀教师单行材料
2014/12/16 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL