I'm making an XMLHttpRequest post request to my Express server. I'm trying to send a string, but I'm doing something wrong.
Client:
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)
}
Server:
router.post('/api/new-message', (req, res, next) => {
console.log('Got it')
console.log('req.body\n', req.body)
})
console.log('Got it') ensures that the request is going through successfully.
I also tried setting a request header: xhr.setRequestHeader('Content-Type', 'plain/text');, but it still didn't go through.
What does work is xhr.setRequestHeader('Content-Type', 'application/json'); and xhr.send(JSON.stringify({message: message})), but that's a JSON object.
How do I send a string over an XMLHttpRequest post request?
I noticed that you tried plain/text, but that is incorrect, the correct header is text/plain.
from MDN
- using the POST method and setting the enctype attribute to
application/x-www-form-urlencoded(default);- using the POST method and setting the enctype attribute to
text/plain;- using the POST method and setting the enctype attribute to
multipart/form-data;- using the GET method (in this case the enctype attribute will be ignored).
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With