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各种参数值
Jun 25 NodeJs
利用nodejs监控文件变化并使用sftp上传到服务器
Feb 18 NodeJs
用nodeJS搭建本地文件服务器的几种方法小结
Mar 16 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 NodeJs
CentOS 安装NodeJS V8.0.0的方法
Jun 15 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
NodeJS实现不可逆加密与密码密文保存的方法
Mar 16 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
nodeJS进程管理器pm2的使用
Jan 09 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 05 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文件上传类实例讲解
2015/10/27 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
laravel学习教程之关联模型
2016/07/30 PHP
PHP判断密码强度的方法详解
2017/05/26 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
php面向对象基础详解【星际争霸游戏案例】
2020/01/23 PHP
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
JavaScript中switch语句的用法详解
2015/06/03 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
Vue入门之数据绑定(小结)
2018/01/08 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
微信小程序五子棋游戏的悔棋实现方法【附demo源码下载】
2019/02/20 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
初学python数组的处理代码
2011/01/04 Python
python类参数self使用示例
2014/02/17 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
Django框架模板介绍
2019/01/15 Python
python循环输出三角形图案的例子
2019/11/22 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
浅谈HTML5新增和废弃的标签
2019/04/28 HTML / CSS
小区门卫值班制度
2014/01/24 职场文书
《姥姥的剪纸》教学反思
2014/02/25 职场文书
社区道德讲堂实施方案
2014/03/21 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
单位介绍信格式
2015/01/31 职场文书