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