node中express的中间件之methodOverride
methodOverride中间件必须结合bodyParser中间件一起使用,为bodyParser中间件提供伪HTTP方法支持.
index.html代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
function submitData(){
var form=document.getElementById("form1");
var formData=new FormData(form);
var xhr=new XMLHttpRequest();
xhr.open("post","index.html",true);
xhr.onload= function () {
if(this.status==200)
document.getElementById("res").innerHTML=this.response;
};
xhr.send(formData);
}
</script>
</head>
<body>
<form id="form1">
姓:<input type="text" id="txtFirstName" name="firstname" value="郭" />
名:<input type="text" id="txtUserName" name="username" value="延思" />
<input type="button" value="提交" onclick="submitData();" />
</form>
<div id="res"></div>
</body>
</html>
服务器段代码server.js
var express=require("express");
var fs=require("fs");
var app=express();
app.use(express.bodyParser());
app.get("/index.html", function (req,res) {
res.sendfile(__dirname+"/index.html");
});
app.post("/index.html", function (req,res) {
var str="";
for(var k in req.body){
str+="键是:"+k+" 值是:"+req.body[k]+"<br/>";
}
res.send(str);
});
app.listen(1337,"127.0.0.1", function () {
console.log("开始监听1337");
});
让程序走起来:

现在对上面的代码进行修改:
var express=require("express");
var fs=require("fs");
var app=express();
app.use(express.bodyParser());
app.get("/index.html", function (req,res) {
res.sendfile(__dirname+"/index.html");
});
app.put("/index.html", function (req,res) {
var str="";
for(var k in req.body){
str+="键是:"+k+" 值是:"+req.body[k]+"<br/>";
}
res.send(str);
});
app.listen(1337,"127.0.0.1", function () {
console.log("开始监听1337");
});
现在单击按钮后,会出现404错误,因为我们单击出发的是post,而服务器上是put事件.
现在想让服务器端依然是put接受,html上依然是post请求.
可以对代码作一下修改:
var express=require("express");
var fs=require("fs");
var app=express();
app.use(express.bodyParser());
app.use(express.methodOverride("test"));
app.get("/index.html", function (req,res) {
res.sendfile(__dirname+"/index.html");
});
app.post("/index.html", function (req,res) {
var str="";
for(var k in req.body){
str+="键是:"+k+" 值是:"+req.body[k]+"<br/>";
}
res.send(str);
});
app.listen(1337,"127.0.0.1", function () {
console.log("开始监听1337");
});
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>向服务器上传文件</title>
<script type="text/javascript">
function submitData(){
var form=document.getElementById("form1");
var formData=new FormData(form);
var xhr=new XMLHttpRequest();
xhr.open("post","index.html",true);
xhr.onload= function () {
if(this.status==200)
document.getElementById("res").innerHTML=this.response;
};
xhr.send(formData);
}
</script>
</head>
<body>
<form id="form1">
<input type="hidden" name="test" value="put"/>
姓:<input type="text" id="txtFirstName" name="firstname" value="郭" />
名:<input type="text" id="txtUserName" name="username" value="延思" />
<input type="button" value="提交" onclick="submitData();" />
</form>
<div id="res"></div>
</body>
</html>
让程序跑起来 就和一开始的结果是一样的了.
node中express的中间件之methodOverride的更多相关文章
- node中express的中间件之cookieParser
cookieParser中间件用于获取web浏览器发送的cookie中的内容.在使用了cookieParser中间件后, 代表客户端请求的htto.IncomingMessage对象就具有了一个coo ...
- node中express的中间件之basicAuth
basicAuth中间件为网站添加身份认证功能.在使用了该中间件后, 用户访问网站时必须输入用户名与密码,在用户输入了用户名与密码并通过验证之后才能访问网站. 当用户输入的用户名和密码符合条件,中间件 ...
- 对于Node中Express框架的中间件概念的感知
中间件是什么呢? 中间件就是客户端http请求发起传送到服务器和服务器返回响应之间的一些处理函数. 为什么要使用中间件? 通过中间件,可以对数据进行操作使得我们能方便地操作请求数据编写服务器响应.如b ...
- 77.深入理解nodejs中Express的中间件
转自:https://blog.csdn.net/huang100qi/article/details/80220012 Express是一个基于Node.js平台的web应用开发框架,在Node.j ...
- 使用express+multer实现node中的图片上传
使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在n ...
- Express ( MiddleWare/中间件 路由 在 Express 中使用模板引擎 常用API
A fast, un-opinionated, minimalist web framework for Node.js applications. In general, prefer simply ...
- node.js中express框架的基本使用
express是一个基于node.js平台的,快速,开放,极简的web开发框架. 一.安装 express npm install express --save 二.简单使用 express //引入 ...
- body-parser Node.js(Express) HTTP请求体解析中间件
body-parser Node.js(Express) HTTP请求体解析中间件 2016年06月08日 781 声明 在HTTP请求中,POST.PUT和PATCH三种请求方法中包 ...
- node 进阶 | 通过node中如何捕获异常阐述express的特点
node如何捕获异常 node基于js的单线程,有了非阻塞异步回调的概念,但是在处理多个并发连接时,并发环境要求高,最重要的是单线程,单核CPU,一个进程crash则web服务都crash,但是为什么 ...
随机推荐
- L155
Wireless Festival has been given permission to remain in London's Finsbury Park, provided performers ...
- three.js入门系列之视角和辅助线
假设你已经创建好了three.js的开发环境(我是写在vue项目中的),那么接下来,从头开始演示是如何用three.js来构建3D图形的.(笔记本写的代码,屏幕小,所以为了能够整屏看到完整代码,就将字 ...
- CentOS 7常用工具安装
git 在Linux下开发项目,少不了要使用git工具,安装方法十分简单,通过一条 yum 指令既可完成安装: yum install git 安装完成后检测版本: # git --version g ...
- libcurl使用认证证书 https认证
在server.xml中增加下面的内容: ciphers="SSL_RSA_WITH_RC4_128_SHA" 下面是libcurl 的测试代码: #include <std ...
- fedora26 Mysql 开放远程链接服务
下载安装MySQL 用以下指令安装 $ dnf install mysql-server 注意:Fedora默认安装mariadb 安装完成之后,用以下指令测试 $ mysql --version 开 ...
- hiho1514 偶像的条件 lower_bound
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi的学校正面临着废校的大危机.面对学校的危机,小Hi同学们决定从ABC三个班中各挑出一名同学成为偶像. 成为偶像团体的 ...
- JSP学习(四)JSP属性范围
P属性范围 四种属性范围分别指以下四种: 当前页page:一个属性只能在一个页面中取得,跳转到其他页面无法取得 一次服务器请求request:一个页面中设置的属性,只要经过了服务器跳转,则跳转之后的页 ...
- BZOJ4543 POI2014 Hotel加强版 【长链剖分】【DP】*
BZOJ4543 POI2014 Hotel加强版 Description 同OJ3522 数据范围:n<=100000 Sample Input 7 1 2 5 7 2 5 2 3 5 6 4 ...
- java获取服务器的ip和地址
HttpServletRequest httpRequest=(HttpServletRequest)request; String strBackUrl = "http://" ...
- ASP.NET Core 中的SEO优化(3):自定义路由匹配和生成
前言 前两篇文章主要总结了CMS系统两个技术点在ASP.NET Core中的应用: <ASP.NET Core 中的SEO优化(1):中间件实现服务端静态化缓存> <ASP.NET ...