gpt4 book ai didi

javascript - ExpressJS ajax发送空数据

转载 作者:行者123 更新时间:2023-12-03 01:22:49 24 4
gpt4 key购买 nike

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

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 并且这段代码工作得很好。我这里的重点是将 Node 与expressjs 结合使用。

最佳答案

这仅解析 Content-Typeapplication/x-www-form-urlencoded 的请求。请参阅docs主体解析器。

app.use(BodyParser.urlencoded({extended:true}));

FormData 发送请求,并将 Content-Type 设置为 multipart/form-data。由于您的 bodyparser 无法解析此类内容类型,因此您应该尝试将数据作为 application/jsonapplication/x-www-form-urlencoded 发送。请参阅 FormData 的 MDN 文档.

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

关于javascript - ExpressJS ajax发送空数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51691443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com