通过XMLHttpRequest将纯文本发送到Express服务器

时间:2017-12-13 02:00:19

标签: javascript express xmlhttprequest

我正在向我的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请求发送字符串?

1 个答案:

答案 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