【问题标题】:Post is not sending Object帖子未发送对象
【发布时间】:2018-10-23 10:53:36
【问题描述】:

我创建了一个登录页面,该页面应该发布用户名和密码。我用过axios。我将这个用户名和密码包装到一个对象中(检查下面的代码),但提交后,我收到“201”响应。是的,它正在工作,但在 Chrome 浏览器 -> 网络 -> 请求有效负载中显示如下

{"name":"[object Undefined]","password":"[object Undefined]"}

这是我的代码

class UserLogin extends React.Component {
    createUser = () => {
        let getLoginName = document.getElementById('user_name');
        let getLoginPassword = document.getElementById('user_pass');
        let postData = {
            name: toString(getLoginName),
            password: toString(getLoginPassword)
        }
        axios.post('https://reqres.in/api/users', postData)
            .then((function (response) {
                console.log(response);
            }))
            .catch((function (error) {
                console.log(error);
            }))
    }

这是我的 API

{
    "email": "xxx@yyy.com",
    "password": "helloworld"
}

【问题讨论】:

  • 请发布您的toString() 方法。另外:console.log(getLoginName, getLoginPassword)。字段存在吗?它向您展示了元素吗?
  • 不工作@FrankerZ.. 是的,这些文件是存在的......如果我像字符串一样提供硬编码的用户名和密码,它的工作
  • 不工作是什么意思?我问的任何事情都不会改变任何事情......他们正在记录功能,旨在为我们提供有关您的问题的更多信息。在let getLoginPassword = document.getElementById('user_pass'); 之后添加console.log() 行,然后从控制台发布结果输出。此外,发布您的 toString() 方法。
  • 不幸的是,没有合适的minimal reproducible example,我投票决定将此问题作为题外话结束。请添加我提到的详细信息,以便我们为您提供适当的帮助。
  • ,缩进您的代码并在整个代码中始终使用indenting style。这样做会使它更加更容易阅读/维护。作为副作用,为您放置在 Stack Overflow 上的代码这样做会使您更有可能让人们对您的帖子进行投票,并使人们更有可能花时间回答您的问题。您选择哪种风格并不重要(尽管在 IMO 中,有些风格比其他风格更适合 JavaScript)。但是,选择一个并将其一致地用于单个项目中的所有代码。

标签: javascript reactjs axios


【解决方案1】:

试试这个:

 let postData =  JSON.stringify({

   username: getLoginName,
   password: getLoginPassword

});

【讨论】:

  • 我收到错误“未捕获的类型错误:将循环结构转换为 JSON”
  • 您可以通过控制台记录您的 getLoginName 和 getLoginPassword 吗?
【解决方案2】:

如果你想把它作为一个对象发送,你需要括号,所以像这样发送它

 axios.post('https://reqres.in/api/users', {
   data: postData}).then( response => {
 console.log(response);
  })

你是如何在 api 中请求数据的?

【讨论】:

  • 告诉我为什么它不是真的? :D 我在通话中使用这个?我问,如果他在 api 中得到任何东西,他可以登录吗?所以如果你不知道你在说什么不要评论?
  • 您可能会在调用中使用它,但这完全没有必要,实际上会创建一个不需要的数据结构{data: actualDataHere}。然后,您需要在后端使用 $_POST['data']['key'] 之类的东西来访问它,而不仅仅是 $_POST['key']
  • 没错,这是唯一的事情,一些小结构只是为了向他说明我在做什么?不要为这么小的事情投反对票吗?如果您要发送更多对象和东西,这可能是一个好习惯。总的来说这是一种工作方法
  • 但是如果他想将它作为对象发送,则需要您的说法。这是不正确的。 OP 已经另外指出,他在他的请求负载中看到了{"name":"[object Undefined]","password":"[object Undefined]"},所以密钥存在的事实意味着他的toString() 方法有问题,或者他的document.getElementById 没有返回元素。所有这一切都将请求重写为:{"data": {"name":"[object Undefined]","password":"[object Undefined]"}}
  • 他可以只输入 JSON.stringify(object) 然后发送它,应该做的工作,但也用于纠正他发布他的 axios 的方式。
猜你喜欢
  • 2016-12-28
  • 2019-10-05
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
相关资源
最近更新 更多