process 请求数据解析问题
开发过程中发现ajax提交的数据无法被express正确的解析,主要的情况是这样的:
// 浏览器端post一个对象$.ajax({url:"/save",type:"post",data:{name:"henry",age:30,hobby:["sport","coding"]}});// express接收这个对象router.post("/save",function(req, res, next){console.log(req.body);// => { 'info[name]': 'henry','info[age]': '30','hobby[1]': 'sport','hobby[2]': 'coding' }});
解决方式:
使用bodyParser中间件
bodyParser中间件用来解析http请求体,是express默认使用的中间件之一。
使用express应用生成器生成一个网站,它默认已经使用了 bodyParser.json 与 bodyParser.urlencoded 的解析功能,除了这两个,bodyParser还支持对text、raw的解析。
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
顾名思义,bodyParser.json是用来解析json数据格式的。bodyParser.urlencoded则是用来解析我们通常的form表单提交的数据,也就是请求头中包含这样的信息:

浙公网安备 33010602011771号