我试图使一个简单的代码有效,但是我有一个我不明白的小问题。
因此,我正尝试使用POST方法发送到JSON形式的服务器(Express 4.16)。我的服务器收到了它(我可以在控制台日志req.body上看到它),但是任何res方法都不起作用(它只是通过它,res.send,res.json,res.redirect ...传递,并且没有任何错误。 )。
有我的代码:
app.js
const express = require('express')
const path = require('path')
const app = express()
app.use(express.urlencoded({extended: false}))
app.use(express.json())
app.use('/public', express.static(path.join(__dirname, 'static')))
app.get('/', (req,res) => {
res.sendFile(path.join(__dirname, 'static', 'index.html'))
})
app.post('/', (req,res) => {
console.log(req.body)
res.send(`You did it ${req.body.name} !! `)
})
app.listen('8080')
main.js
window.addEventListener("load", function () {
let form = document.getElementById("id-form")
function sendData() {
let XHR = new XMLHttpRequest()
let data = {}
for (const input of form.getElementsByTagName('input')) {
data[input.name] = input.value
}
XHR.open('POST', '/')
XHR.setRequestHeader('Content-Type', 'application/json')
let dataToSend = JSON.stringify(data)
XHR.send(dataToSend)
}
form.addEventListener("submit", function (event) {
event.preventDefault()
sendData()
})
})
感谢您的帮助!
答案 0 :(得分:0)
您没有在XHR.send(dataToSend)
中处理来自服务器的响应,但是您应该能够在Chrome Devtools(或其他浏览器中的等效地址)上的“网络”标签中看到响应。