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服务器(10):处理上传图片
Dec 18 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
nodejs修复ipa处理过的png图片
Feb 17 NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
nodejs 图解express+supervisor+ejs的用法(推荐)
Sep 08 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
nodejs实现百度舆情接口应用示例
Feb 07 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
mysql+php分页类(已测)
2008/03/31 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
PHPLog php 程序调试追踪工具
2009/09/09 PHP
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
记录一次排查PHP脚本执行卡住的问题
2016/12/27 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
Js获取事件对象代码
2010/08/05 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
几种响应式文字详解
2017/05/19 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
Vue使用axios出现options请求方法
2019/05/30 Javascript
python通过yield实现数组全排列的方法
2015/03/18 Python
详解使用Python处理文件目录的相关方法
2015/10/16 Python
简单掌握Python中glob模块查找文件路径的用法
2016/07/05 Python
Python连接phoenix的方法示例
2017/09/29 Python
创建Django项目图文实例详解
2019/06/06 Python
Python发展史及网络爬虫
2019/06/19 Python
利用python实现AR教程
2019/11/20 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
python3 kubernetes api的使用示例
2021/01/12 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
String这个类型的class为何定义成final?
2012/11/13 面试题
了解AppleTalk协议吗
2014/04/01 面试题
高职助产应届生自荐信
2013/09/24 职场文书
学院领导推荐信
2013/10/30 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
小学国庆节活动总结
2015/03/23 职场文书
TensorFlow中tf.batch_matmul()的用法
2021/06/02 Python
教你nginx跳转配置的四种方式
2022/07/07 Servers