ExpressJS Ajax发送空数据

时间:2018-08-05 04:41:31

标签: javascript node.js express

我需要将JSON发送到服务器,但是POST请求显示为空。这是我在前端的打字稿:

function sendData() : void {
console.log("Sending data...");
var name_ : string = (document.getElementById("name") as HTMLInputElement).value;
var id_ : string = (document.getElementById("series") as HTMLInputElement).value;

var toSend = new FormData();
toSend.append("name",name_);
toSend.append("id",id_);

var request = new XMLHttpRequest();
request.open("POST", "/add");
request.send(toSend);

}

我的服务器具有以下代码:我已经省略了文件路径。

var Express = require('express');
var BodyParser = require('body-parser');
var Multer = require('multer');
var app = Express();
var upload = Multer();

app.use(Express.static("/public"));
app.use(BodyParser.urlencoded({extended:true}));
app.use(BodyParser.json());

app.get('/public/dataAjax.js', function(req,res){
res.sendFile("C:\\<omitted>\\dataAjax.js");
})

app.get('/', function(req,res) {
  res.sendFile("C:\\<omitted>\\index.html");
});

app.post('/add', function(req,res) {
  console.log("Received:");
  console.log(req);
  res.status(201).json(req.body.name);
});

app.listen(8000, () => console.log("Running on port 8000!"));

我的问题似乎完全在服务器端,因为我过去使用过flask,并且此代码运行良好。我的重点是将节点与expressjs结合使用。

1 个答案:

答案 0 :(得分:1)

这仅解析Dictionary<string,Textbox> myControls = new Dictionary<string,Textbox>(); ... TextBox txtbox = new TextBox(); txtbox.Id = "TxtBoxVol" + i.ToString(); myControls.Add(txtbox.Id,txtbox) ... var myValue = myControls["TxtBoxVol1"].Text // when you are finished myControls.Clear(); Content-Type的请求。请参见正文解析器的docs

application/x-www-form-urlencoded

app.use(BodyParser.urlencoded({extended:true})); 发送设置为FormData的{​​{1}}的请求。 由于您的bodyparser无法解析此类内容类型,因此您应尝试以Content-Typemultipart/form-data的形式发送数据。 请参阅FormData的MDN文档。

您可以使用jquery的serialize方法获取urlencoded字符串。