如何在http.send()函数中传递对象?

时间:2017-11-12 05:36:37

标签: javascript http post vue.js

我正在尝试使用以下代码向网址发布帖子请求。 将对象传递给http.send(params)函数会给出(400)错误的请求错误。 我无法在这里追查这个问题。

     var http = new XMLHttpRequest()
      var url = 'http://somerandomurl'
      http.open('POST', url, true)
      http.setRequestHeader('content-type', 'application/json')
      http.setRequestHeader('accept', 'application/json')
      http.onreadystatechange = function () {
        if (http.readyState === 4 && http.status === 200) {
          returndata = http.responseText
          console.log(JSON.parse(returndata))
        }
      }
      http.send(params)

解决方案:http.send(JSON.stringify({'email':params.email,'password':params.password}))它对我有用。

3 个答案:

答案 0 :(得分:1)

您应该使用以下三种方法之一来完成它 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#A_brief_introduction_to_the_submit_methods

或者,你可以选择Axios。

答案 1 :(得分:1)

您可以使用新的fetch API,使其变得简单,减少代码

// Call the fetch function passing the url of the API as a parameter
fetch(url) 
.then(function(response) {
    // Your code for handling the data you get from the API
})
.catch(function() {
    // This is where you run code if the server returns any errors
});

此外,如果您是新手,它可以让您的工作更快,并帮助您更快地解决问题。

答案 2 :(得分:1)

在我看来,您的问题是您尝试发送整个对象而不是JSON。正确的方法是使用http.send(JSON.stringify(params))