javascript - 将 Jquery 数据发布到 Express

标签 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"});

我还尝试了各种排列:

$.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()); 

但是,诚然,我并不完全理解它的用途。非常感谢任何帮助。

节日快乐! //山姆

最佳答案

您必须在使用它的任何路由之前添加 bodyParser() 中间件,如下所示:

app.use(express.bodyParser());

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

express 的工作方式是每个请求都按照声明的顺序通过中间件和路由向下传递。由于 bodyParser() 中间件现在在您的路由之前声明,它将有机会将请求的主体解析为一种漂亮的 JSON 格式,将解析后的值粘贴到 req.body 中,然后传递控制到下一个路由/中间件;否则,req.body 将根本不存在。

关于javascript - 将 Jquery 数据发布到 Express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13952420/

相关文章:

jquery - 单击委托(delegate)处理程序和内部子项

java - Java.lang.Integer 类型的值 0 无法转换为 JSONObject

javascript - OnEdit() 谷歌脚本触发器在函数中使用

javascript - 在 WooCommerce 的 jQuery 日期选择器问题中禁用工作日和假期

javascript - 为什么要设置 Manager.prototype?

javascript - 为大于零的项目创建对象数组

javascript - 处理postJSON的结果

javascript - jQuery 中的 document.ready

arrays - 将 json 文件编码到 map 中

javascript - 显示 GeoJson 文件中的一个 map 标记