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个性能优化技巧
Jul 15 NodeJs
Nodejs Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 NodeJs
nodejs加密Crypto的实例代码
Jul 07 NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 NodeJs
详解NodeJS模块化
Jun 15 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 zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
PHP读书笔记_运算符详解
2016/07/01 PHP
PHPStrom 新建FTP项目以及在线操作教程
2016/10/16 PHP
laravel使用数据库测试注意事项
2020/04/10 PHP
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
2014/04/23 Javascript
JS自定义对象实现Java中Map对象功能的方法
2015/01/20 Javascript
DOM 高级编程
2015/05/06 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
Vue header组件开发详解
2018/01/26 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
在类Unix系统上开始Python3编程入门
2015/08/20 Python
用python实现对比两张图片的不同
2018/02/05 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
django_orm查询性能优化方法
2018/08/20 Python
对Django url的几种使用方式详解
2019/08/06 Python
python爬虫豆瓣网的模拟登录实现
2019/08/21 Python
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
教师自荐书
2013/10/08 职场文书
幼儿老师求职信
2014/06/30 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
地道战观后感2000字
2015/06/04 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
Django操作cookie的实现
2021/05/26 Python
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript