use*_*666 5 javascript jquery json node.js express
无论req.params/req.query/req.body和$ .post({..}我使用什么组合,我都无法从Express中的Jquery post请求中提取JSON数据.
这是我的jQuery:
$.post("/mail", {email : "s@gmail.com", name : "s@gmail.com"});
Run Code Online (Sandbox Code Playgroud)
我也试过了各种各样的排列:
$.ajax({type: "POST", url: "/mail", dataType :"json", data :
{email : "s@gmail.com", name : "s@gmail.com"}});
Run Code Online (Sandbox Code Playgroud)
这是我的node.js 快递代码:
app.post("/mail", function(req, res) {
console.log(req.body.name);
console.log(req.route);
console.log("params1: " + req.param.params);
....
Run Code Online (Sandbox Code Playgroud)
我已经尝试了无数种方式来访问数据电子邮件和名称而没有成功.如果解决方案是对req.body/req.params的简单修改,我会感到惊讶,但一切皆有可能!数据不存在!(它也没有出现在我的网址中 - 我看到的只有localhost:1337)
req.body/req.params/req.param.params/req.params all返回 undefined,req.query 返回 [].
req.route 返回:
{ path: '/mail',
method: 'post',
callbacks: [ [Function] ],
keys: [],
regexp: /^\/mail\/?$/i,
params: [] }
Run Code Online (Sandbox Code Playgroud)
我试过添加:
app.use(express.bodyParser());
Run Code Online (Sandbox Code Playgroud)
但是,诚然,我并不完全理解它的目的.任何帮助是极大的赞赏.
节日快乐!//山姆
您必须bodyParser()在使用中间件的任何路由之前添加中间件,如下所示:
app.use(express.bodyParser());
app.post('/mail', function(req, res) {
console.log(req.body); // the body attribute will be created by the bodyParser()
});
Run Code Online (Sandbox Code Playgroud)
Express 的工作方式是,每个请求都按照声明的顺序通过中间件和路由向下传递。由于bodyParser()中间件现在是在路由之前声明的,因此它将有机会将请求正文解析为良好的 JSON 格式,将解析后的值粘贴到 中req.body,然后将控制权传递给下一个路由/中间件;否则,req.body意志根本就不存在。
| 归档时间: |
|
| 查看次数: |
2698 次 |
| 最近记录: |