我正在向我的Express服务器发出XMLHttpRequest post
请求。我正在尝试发送一个字符串,但我做错了。
客户端:
const sendMessage = () => {
const message = "This is a test."
var xhr = new XMLHttpRequest();
xhr.open('POST', '/messages/api/new-message/', true)
xhr.onload = function() {
if (this.status == 200) {
const response = JSON.parse(this.responseText);
}
}
xhr.send(message)
}
服务器:
router.post('/api/new-message', (req, res, next) => {
console.log('Got it')
console.log('req.body\n', req.body)
})
console.log('Got it')
确保请求成功完成。
我还尝试设置了一个请求标头:xhr.setRequestHeader('Content-Type', 'plain/text');
,但它仍未通过。
的工作原理是xhr.setRequestHeader('Content-Type', 'application/json');
和xhr.send(JSON.stringify({message: message}))
,但这是一个JSON对象。
如何通过XMLHttpRequest post
请求发送字符串?
答案 0 :(得分:1)
我注意到您尝试了plain/text
,但这是不正确的,正确的标头是text/plain
。
来自MDN
- 使用POST方法并将enctype属性设置为
application/x-www-form-urlencoded
(默认);- 使用POST方法并将enctype属性设置为
text/plain
;- 使用POST方法并将enctype属性设置为
multipart/form-data
;- 使用GET方法(在这种情况下,enctype属性将被忽略)。
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest