express 服务器如何获得ajax post方法提交的参数?
发布于 10 年前 作者 bourbon1991 32706 次浏览 最后一次编辑是 8 年前

服务器使用req.body.XXX获取不到,而且显示req.body为undefined, 用res.json回送的数据客户端可以收到。 请问应该如何获取参数??? 感谢各位的回答与意见!

13 回复

感谢回答,可是还是没有数据,undefined,而且post的数据不是通过body接受吗?

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

// see https://github.com/expressjs/body-parser
// 添加 body-parser 中间件就可以了
app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json());

app.post('/', function (req, res) {
    console.log('req.body', req.body);
    res.send({airead: 'fan'});
});

app.listen(8888);

//  shell
//
// $ curl -d'fan=airead' localhost:8888
// {"airead":"fan"}%

@bourbon1991 一楼在误导楼主。post数据是放在body中得。而且params是获得get数据的。 需要一个中间件:body-parser ajax:

$.ajax({
         type: "POST",
         url: "your url",
         dataType:'json',
         data: "email="+$('.email').val()+"&pwd="+$('.pwd').val(),
         success:function(msg){...}
});

your server :

var email = req.body.email,
      pwd = req.body.pwd;
//do something...

感谢回答,我试试~

@struCoder 恩恩,感谢回答,我试试哈~

app.use(logger(‘dev’)); app.use(bodyParser.json()); app.use(bodyParser.urlencoded());

var c={a:a,b:b,c:c……} $.post("/ajax/autoprint",c,function(data){ //somefunctions })

console.log(req.body)

@struCoder 感谢,解决了,还有个问题想请教,如果客户端提交的dataType为html,服务器如何接受?

感谢,解决了,还有个问题想请教,如果客户端提交的dataType为html,服务器如何接受?

感谢大家的回答,问题解决了,还有个问题想请教大家,如果客户端提交的dataType为html,服务器如何接受?

要写中间件。 EXPRESS默认的中间件只支持 JSON和urlencoded 我自己写了XML版中间件 但是HTML版。要你自己写了。或者你把HTML封在JSON里传。

@MiguelValentine 奥,这样,感谢~

@bourbon1991 不好意思,确实是body,我刚没仔细看问题

回到顶部