2012-12-19 40 views
5

无论req.params/req.query/req.body和$ .post({..}我使用什么组合,我都无法从我的Jquery post请求中提取JSON数据。将jquery数据发送到快递

这是我jQuery的

$.post("/mail", {email : "[email protected]", name : "[email protected]"}); 

我也尝试过的各种排列:

$.ajax({type: "POST", url: "/mail", dataType :"json", data : 
{email : "[email protected]", name : "[email protected]"}}); 

这是我的node.js EXP RESS代码:

app.post("/mail", function(req, res) { 
    console.log(req.body.name); 
    console.log(req.route); 
    console.log("params1: " + req.param.params); 
.... 

我试图访问数据的电子邮件和名称没有成功的无穷的方法。如果解决方案是对req.body/req.params的简单修改,但任何事情都有可能,我会感到惊讶!数据只是不存在! (它不会出现在我的网址或者 - 所有我看到的是本地主机:1337)

req.body/req.params/req.param.params/req.params 都返回不确定和REQ。查询返回[]

req.route 回报

{ path: '/mail', 
    method: 'post', 
    callbacks: [ [Function] ], 
    keys: [], 
    regexp: /^\/mail\/?$/i, 
    params: [] } 

我试着加入:

app.use(express.bodyParser()); 

但是,不可否认,我不完全了解其用途。任何帮助是极大的赞赏。

节日快乐! //山姆

+0

也许这会帮助你一点吗? http://stackoverflow.com/questions/5710358/how-to-get-post-query-in-express-node-js –

+0

'bodyParser'中间件是一个初始化'身体从POST身体',所以你真的需要这个。确保在安装路由之前使用它(即在执行'app.use(app.router)'或第一个'app.get' /'app.post'等调用之前)。 –

+0

Linus说了什么,确保在配置bodyParser之前设置路由。 – leepowell

回答

1

你将不得不使用它,像这样的任何路线之前添加bodyParser()中间件:

app.use(express.bodyParser()); 

app.post('/mail', function(req, res) { 
    console.log(req.body); // the body attribute will be created by the bodyParser() 
}); 

的方式表达的作品是每个请求通过中间件和路线流淌下来按照它们被声明的顺序。由于bodyParser()中间件现在在你的路由之前被声明,它将有机会将请求的主体解析为一个很好的JSON格式,将解析后的值保存到req.body中,然后将控制传递给下一个路由/中间件;否则,req.body将根本不存在。

+0

不错,谢谢你的回答! –