【发布时间】:2025-12-08 09:40:01
【问题描述】:
无论我使用什么 req.params/req.query/req.body 和 $.post({..} 组合,我都无法从我的 Jquery post 请求中提取 JSON 数据。
这是我的 jQuery:
$.post("/mail", {email : "s@gmail.com", name : "s@gmail.com"});
我还尝试了以下各种排列:
$.ajax({type: "POST", url: "/mail", dataType :"json", data :
{email : "s@gmail.com", name : "s@gmail.com"}});
这是我的 node.js express 代码:
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 的简单修改,我会感到惊讶,但一切皆有可能!数据根本不存在! (它也没有出现在我的网址中——我看到的只是 localhost:1337)
req.body / req.params / req.param.params / req.params 全部返回 undefined和req.query 返回 []。
req.route 返回:
{ path: '/mail',
method: 'post',
callbacks: [ [Function] ],
keys: [],
regexp: /^\/mail\/?$/i,
params: [] }
我已经尝试添加:
app.use(express.bodyParser());
但是,诚然,我并不完全理解它的目的。非常感谢任何帮助。
节日快乐! // 山姆
【问题讨论】:
-
也许这会对您有所帮助? *.com/questions/5710358/…
-
bodyParser中间件是从 POST 正文初始化req.body的中间件,因此您确实需要它。确保在安装路线之前使用它(即在您执行app.use(app.router)或您的第一个app.get/app.post等电话之前)。 -
Linus 所说的,请确保在您的配置中设置 bodyParser 在您的路由之前。
-
你知道什么!那解决了它。
app.use(express.bodyParser());必须在第一个 app.get/post 之前出现。非常感谢!
标签: javascript jquery json node.js express