methodOverride中间件必须结合bodyParser中间件一起使用,为bodyParser中间件提供伪HTTP方法支持.

index.html代码:

  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <script type="text/javascript">
  7. function submitData(){
  8. var form=document.getElementById("form1");
  9. var formData=new FormData(form);
  10. var xhr=new XMLHttpRequest();
  11. xhr.open("post","index.html",true);
  12. xhr.onload= function () {
  13. if(this.status==200)
  14. document.getElementById("res").innerHTML=this.response;
  15. };
  16. xhr.send(formData);
  17. }
  18. </script>
  19. </head>
  20. <body>
  21. <form id="form1">
  22. 姓:<input type="text" id="txtFirstName" name="firstname" value="郭" />
  23. 名:<input type="text" id="txtUserName" name="username" value="延思" />
  24. <input type="button" value="提交" onclick="submitData();" />
  25. </form>
  26. <div id="res"></div>
  27. </body>
  28. </html>

服务器段代码server.js

  1. var express=require("express");
  2. var fs=require("fs");
  3. var app=express();
  4. app.use(express.bodyParser());
  5. app.get("/index.html", function (req,res) {
  6. res.sendfile(__dirname+"/index.html");
  7. });
  8. app.post("/index.html", function (req,res) {
  9. var str="";
  10. for(var k in req.body){
  11. str+="键是:"+k+" 值是:"+req.body[k]+"<br/>";
  12. }
  13. res.send(str);
  14. });
  15. app.listen(1337,"127.0.0.1", function () {
  16. console.log("开始监听1337");
  17. });

让程序走起来:

现在对上面的代码进行修改:

  1. var express=require("express");
  2. var fs=require("fs");
  3. var app=express();
  4. app.use(express.bodyParser());
  5. app.get("/index.html", function (req,res) {
  6. res.sendfile(__dirname+"/index.html");
  7. });
  8. app.put("/index.html", function (req,res) {
  9. var str="";
  10. for(var k in req.body){
  11. str+="键是:"+k+" 值是:"+req.body[k]+"<br/>";
  12. }
  13. res.send(str);
  14. });
  15. app.listen(1337,"127.0.0.1", function () {
  16. console.log("开始监听1337");
  17. });

现在单击按钮后,会出现404错误,因为我们单击出发的是post,而服务器上是put事件.

现在想让服务器端依然是put接受,html上依然是post请求.

可以对代码作一下修改:

  1. var express=require("express");
  2. var fs=require("fs");
  3. var app=express();
  4. app.use(express.bodyParser());
  5. app.use(express.methodOverride("test"));
  6. app.get("/index.html", function (req,res) {
  7. res.sendfile(__dirname+"/index.html");
  8. });
  9. app.post("/index.html", function (req,res) {
  10. var str="";
  11. for(var k in req.body){
  12. str+="键是:"+k+" 值是:"+req.body[k]+"<br/>";
  13. }
  14. res.send(str);
  15. });
  16.  
  17. app.listen(1337,"127.0.0.1", function () {
  18. console.log("开始监听1337");
  19. });
  1. <!DOCTYPE html>
  2. <html>
  3. <head lang="en">
  4. <meta charset="UTF-8">
  5. <title>向服务器上传文件</title>
  6. <script type="text/javascript">
  7. function submitData(){
  8. var form=document.getElementById("form1");
  9. var formData=new FormData(form);
  10. var xhr=new XMLHttpRequest();
  11. xhr.open("post","index.html",true);
  12. xhr.onload= function () {
  13. if(this.status==200)
  14. document.getElementById("res").innerHTML=this.response;
  15. };
  16. xhr.send(formData);
  17. }
  18. </script>
  19. </head>
  20. <body>
  21. <form id="form1">
  22. <input type="hidden" name="test" value="put"/>
  23. 姓:<input type="text" id="txtFirstName" name="firstname" value="郭" />
  24. 名:<input type="text" id="txtUserName" name="username" value="延思" />
  25. <input type="button" value="提交" onclick="submitData();" />
  26. </form>
  27. <div id="res"></div>
  28. </body>
  29. </html>

让程序跑起来 就和一开始的结果是一样的了.

node中express的中间件之methodOverride的更多相关文章

  1. node中express的中间件之cookieParser

    cookieParser中间件用于获取web浏览器发送的cookie中的内容.在使用了cookieParser中间件后, 代表客户端请求的htto.IncomingMessage对象就具有了一个coo ...

  2. node中express的中间件之basicAuth

    basicAuth中间件为网站添加身份认证功能.在使用了该中间件后, 用户访问网站时必须输入用户名与密码,在用户输入了用户名与密码并通过验证之后才能访问网站. 当用户输入的用户名和密码符合条件,中间件 ...

  3. 对于Node中Express框架的中间件概念的感知

    中间件是什么呢? 中间件就是客户端http请求发起传送到服务器和服务器返回响应之间的一些处理函数. 为什么要使用中间件? 通过中间件,可以对数据进行操作使得我们能方便地操作请求数据编写服务器响应.如b ...

  4. 77.深入理解nodejs中Express的中间件

    转自:https://blog.csdn.net/huang100qi/article/details/80220012 Express是一个基于Node.js平台的web应用开发框架,在Node.j ...

  5. 使用express+multer实现node中的图片上传

    使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...

  6. Express ( MiddleWare/中间件 路由 在 Express 中使用模板引擎 常用API

    A fast, un-opinionated, minimalist web framework for Node.js applications. In general, prefer simply ...

  7. node.js中express框架的基本使用

    express是一个基于node.js平台的,快速,开放,极简的web开发框架. 一.安装 express npm install express --save 二.简单使用 express //引入 ...

  8. body-parser Node.js(Express) HTTP请求体解析中间件

    body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日     781     声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包 ...

  9. node 进阶 | 通过node中如何捕获异常阐述express的特点

    node如何捕获异常 node基于js的单线程,有了非阻塞异步回调的概念,但是在处理多个并发连接时,并发环境要求高,最重要的是单线程,单核CPU,一个进程crash则web服务都crash,但是为什么 ...

随机推荐

  1. Mysql双机热备--预备知识

    1.双机热备 对于双机热备这一概念,我搜索了很多资料,最后,还是按照大多数资料所讲分成广义与狭义两种意义来说. 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务.当一台服务器 ...

  2. Modules(最小树形图)

    题目链接: Modules 描述 蒜头有一块主板,为了提升其性能,可在主板上安置若干增强模块.蒜头有n个不同的增强模块,增强模块可以直接安置在主板上,也可以安置在已经直接或间接连接在主板上的其他增强模 ...

  3. strip()函数和 split()函数

    一:python strip()函数介绍 函数原型:strip可以删除字符串的某些字符 声明:s为字符串,rm为要删除的字符序列 s.strip(rm)        删除s字符串中开头.结尾处,位于 ...

  4. Linux 释放物理内存和虚拟内存

    1.查看内存占用情况 $ free -m -h total used free shared buff/cache available Mem: .7G .0G .9G 385M 780M .0G S ...

  5. ZooKeeper 学习资料积累

    跟着实例学习ZooKeeper的用法: 临时节点 跟着实例学习ZooKeeper的用法: 缓存 跟着实例学习ZooKeeper的用法: 队列 跟着实例学习ZooKeeper的用法: Barrier 跟 ...

  6. jQuery radio|checkbox的取值与赋值

    文章简单即是美[我说的是技术博客] |--radio   |--checkbox   参考: http://blog.csdn.net/gd2008/article/details/6951208 h ...

  7. 升级到XE10

    下午抽空从XE7升级到XE10,用的是lsuper大侠的Dx10Update1_23.0.21418.4207,用到的控件基本装全乎了. 过程中也碰到点问题,记录下子. 1. cnPack结构匹配线与 ...

  8. Android编程实例-获取当前进程名字

    下面代码是根据进程id获取进程名字: /** * 根据Pid获取当前进程的名字,一般就是当前app的包名 * * @param context 上下文 * @param pid 进程的id * @re ...

  9. Percona Xtrabackup 安装

    1.安装Percona Xtrabackup YUM Repository --安装repository [root@manager ~]# yum install https://www.perco ...

  10. selenium-java,定位并操作frame和iframe内的元素

    因为frame和iframe的原因,在frame里的元素不能直接定位需要切到相应的frame才可以对元素进行操作,下面是涉及的方法 webDriver.switchTo().defaultConten ...