ExpressJS中的POST参数

时间:2014-10-26 12:22:51

标签: javascript node.js post express

我正在研究一个简单的texteditor,它通过Node / ExpressJS服务器保存和加载文本文件。加载很好,但由于我无法正确地将数据传输到服务器应用程序,因此保存无法正常工作。

enter image description here

我通过XMLHttpRequest通过POST请求将数据发送到服务器,根据dev-tools中的network-profiler工作正常,调用'handler_save'函数,但没有接收到参数。

我做错了什么? (这是服务器代码的一小部分,为了演示而改变了:)

express = require('express')();

function init_save_load(){
  var bodyParser = require('body-parser');
  express.use(bodyParser.urlencoded({ extended: true }));
  express.use('/save', handler_save );
  express.use('/load', handler_load );
}

...

function handler_save(req, res){
  console.log(req.body);    // "{name:post.txt,data:testing}"
}

2 个答案:

答案 0 :(得分:2)

确保您正在解析请求正文以便它可以正常工作

var bodyParser = require('body-parser');
app.use(bodyParser());

bodyParser是“Connect”的一部分,“Connect”是node.js的一组中间件。以下是Connect的真实文档和来源:http://www.senchalabs.org/connect/bodyParser.html

最后控制台记录req.body并查看其中的内容

 console.log(req.body)

答案 1 :(得分:1)

您不仅需要像Abdul所提到的那样使用正文解析中间件,而且您的请求需要具有正确的Content-Type。目前您正在发送Content-Type: text/plain,但对于简单表单应为Content-Type: application/x-www-form-urlencoded,对于包含文件的表单应为Content-Type: multipart/form-data