从节点中的请求中提取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:
-
Express 3.x
app.use(express.bodyParser({limit : '50mb'}));
-
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/