【发布时间】:2022-01-11 02:33:31
【问题描述】:
我遇到了这个问题,因为我使用 XMLHttpRequest 通过 JavaScript 发送数据,但没有在 node.js express post 方法中接收它。我不知道我做错了什么。
我的脚本 - 函数表单在窗口加载时执行
function form() {
const btn = document.getElementById("save-data");
let currentPage = window.location.href.split("/").at(-1);
function sendData(data) {
const XHR = new XMLHttpRequest();
XHR.open("POST", window.location.href);
XHR.setRequestHeader("Content-Type", "application/json");
console.log(data); // I get right data
XHR.send(data);
}
btn.addEventListener("click", () => {
switch (currentPage) {
case "settings":
const prefix = document.getElementById("prefix").value;
let buttonState = document.getElementById("module-state");
if (buttonState.hasAttribute("enable")) {
buttonState = "enable";
} else {
buttonState = "disable";
}
sendData({
prefix: prefix,
buttonState: buttonState,
announcements: {
giveawayChannelID: 123,
updateChannelID: 123,
},
});
}
});
}
我的 Node.js 代码
router.post('/:id/settings', (req, res) => {
console.log(req.body) // {}
})
请帮忙。
【问题讨论】:
-
您可能会发现 Fetch API 更易于使用。它在浏览器中得到很好的支持。多年来,我们通常不需要 XHR。 :-)
-
您是否在 Express 中启用了正文解析器?
-
不,我不启用此功能。怎么办?
-
send函数不接受对象,它会被转换成字符串'[object Object]'解析时会出错。确保使用XHR.send(JSON.stringify(data));
标签: javascript node.js json express post