从节点中的请求中提取JSON数据

我已经开始一个新的网站与节点服务器,以更熟悉node.js,我发布数据到服务器,但我不知道如何读取请求中的JSON数据:

客户要求:

function addSymptom(name) { $.ajax({ type: 'POST', url: '/addSymptom', data: { symName: name }, success: function (data) { listSymptoms(); }, contentType: "application/json", dataType: 'json' }); } 

服务器句柄:

  app.post('/addSymptom', function (req, res) { var newSymptom = req.body; console.log(newSymptom); // undefined :( res.send(JSON.stringify({ result: 'success' })); }); 

为什么request.body未定义? 有没有不同的方式,我应该读取请求正文中的“symName”字段?

一定要添加node.js bodyParser模块..

如果您使用的是Express 3.x / 4.x,则只需确保包含bodyParser:

  1. Express 3.x

     app.use(express.bodyParser({limit : '50mb'})); 
  2. Express 4.x

在你的包文件中:

 "body-parser": "~1.0.0", 

或者运行npm-install body-parser

然后在你的node.js服务器上:

 var bodyParser = require('body-parser'); // create our app var app = express(); // instruct the app to use the `bodyParser()` middleware for all routes app.use(bodyParser()); 

链接到一个例子: http : //code.runnable.com/U0sU598vXio2uD-1/example-reading-form-input-with-express-4-0-and-body-parser-for-node-js 3.没有快递

如果由于某种原因你决定不使用express,你将需要绑定到套接字的数据处理程序来读取数据。

这里是关于这个问题的文章: http : //blog.frankgrimm.net/2010/11/howto-access-http-message-body-post-data-in-node-js/