【问题标题】:How to post data through API (ExpressJS) (ReactJS)?如何通过 API (ExpressJS) (ReactJS) 发布数据?
【发布时间】:2018-05-17 11:37:18
【问题描述】:

所以基本上我有一个登录,每次用户按下登录按钮时都会发送帖子数据

sendLogin(e){
    e.preventDefault();
    fetch('/users', {
      method: 'POST',
      body: JSON.stringify({
        email: this.email.value,
        password: this.password.value
      }),
    }).then(function(response) {
      return response
    }).then(function(body) {
      console.log(body);
    });
  }
  render(){
    return (
      <form onSubmit={(event) => this.sendLogin(event)} class="asdf">
        <input type="text" placeholder="email" ref={(input) => { this.email = input}}/>
        <input type="password" placeholder="password" ref={(input) => { this.password = input }}/>
        <input type="submit" placeholder="submit"/>
      </form>
    )
  }

在我的 express server.js 代码中,我将其设置为控制台记录我们获得的数据

app.post('/users', function(req, res) {
    var user = req.body;
    res.end('Success');
    console.log('GOT A REQUEST');
    console.log(user);
})

console.log(user) 部分根本不工作,在客户端代码中 console.log(body);部分也根本不起作用。关于如何解决这个问题的任何想法?

编辑:它们都未定义

当我将返回响应更改为返回 response.json 时,它给了我这个错误

Uncaught (in promise) SyntaxError: Unexpected token S in JSON at position 0
Promise rejected (async)

【问题讨论】:

    标签: reactjs api express post


    【解决方案1】:

    console.log(user) 部分根本不工作,在客户端 对 console.log(body) 进行编码;部分也根本不起作用。任何想法 如何解决这个问题?

    那是因为执行顺序:

    改变这个:

    res.end('Success');
    console.log('GOT A REQUEST');
    console.log(user);
    

    收件人:

    console.log('GOT A REQUEST');
    console.log(user);
    res.end('Success');
    

    Uncaught (in promise) SyntaxError: Unexpected token S in JSON at 位置 0 Promise 被拒绝(异步)

    此错误的原因是 res.end('Success'); ,您发送的是 String 而不是 JSON ,请尝试 res.end({data : logged_in_user_data});

    注意:如果您需要用数据响应,请改用诸如 res.send() 和 res.json()。

    【讨论】:

    • 它仍然给我 undefined 和 Unhandled Rejection (SyntaxError): Unexpected end of JSON input 并且它显示 response.json() 作为 react.js 代码中的错误
    • 从节点端尝试res.end({status : 'success'});
    • 我和res.end({data : logged_in_user_data});都试过了,但都没有工作。它一直说 return response.json();是JS代码出错
    • 尝试使用res.json({status : 'success'});
    • 所以 res.json({status : 'success'});有效,它出现在浏览器的 javascript 控制台中。问题出在nodejs console.log(user);仍然出现未定义
    猜你喜欢
    • 1970-01-01
    • 2020-12-17
    • 2021-05-04
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 2020-10-31
    相关资源
    最近更新 更多