javascript - 如何从 axios promise 获取控制台日志

标签 javascript reactjs axios react-dom

这让我发疯。我无法从我的 axios POST 请求中看到 response 对象。

import React, {
  Component
} from 'react';
import axios from 'axios';

class SignUp extends Component {
  state = {
    name: '',
    email: '',
    password: ''
  };

  handleNameChange = e => {
    this.setState({
      name: e.target.value
    });
  };

  handleEmailChange = e => {
    this.setState({
      email: e.target.value
    });
  };

  handlePasswordChange = e => {
    this.setState({
      password: e.target.value
    });
  };

  handleSubmit = e => {
    e.preventDefault();
    const {
      name,
      email,
      password
    } = this.state;
    const user = {
      name: name,
      email: email,
      password: password
    };
    axios
      .post('http://localhost:7777/signup', {
        user
      })
      .then(function(response) {
        console.log(response);
      })
      .catch(function(error) {
        console.log(error);
      });
  };

  render() {
    return ( <
      form className = "form-signin"
      onSubmit = {
        this.handleSubmit
      } >
      <
      h2 className = "form-signin-heading" > Please sign up < /h2> <
      label htmlFor = "inputName"
      className = "sr-only" >
      Name <
      /label> <
      input type = "name"
      name = "name"
      onChange = {
        this.handleNameChange
      }
      id = "inputName"
      className = "form-control"
      placeholder = "Name"
      required /
      >
      <
      label htmlFor = "inputEmail"
      className = "sr-only" >
      Email address <
      /label> <
      input type = "email"
      name = "email"
      onChange = {
        this.handleEmailChange
      }
      id = "inputEmail"
      className = "form-control"
      placeholder = "Email address"
      required /
      >
      <
      label htmlFor = "inputPassword"
      className = "sr-only" >
      Password <
      /label> <
      input type = "password"
      name = "password"
      onChange = {
        this.handlePasswordChange
      }
      id = "inputPassword"
      className = "form-control"
      placeholder = "Password"
      required /
      >

      <
      button className = "btn btn-lg btn-primary btn-block"
      type = "submit" >
      Sign up <
      /button> <
      /form>
    );
  }
}

export default SignUp;

有人请告诉我我错过了什么。我收到服务器 console 消息。但是我在浏览器开发人员工具中看不到该消息。

这是我的后端代码。

const express = require('express');
const bodyParser = require("body-parser");
const cors = require("cors");

const app = express();

app.use(bodyParser.json());
app.use(cors({
  origin: "http://localhost:3019"
}));

app.post('/signin', function(req, res) {
  let useremail = req.body.email;
  let password = req.body.password;
  if (useremail && password) {
    console.log('success')
  } else {
    console.log('Failure');
  }
});

app.post('/signup', function(req, res) {
  let userfullname = req.body.fullname;
  let useremail = req.body.email;
  let password = req.body.password;
  console.log(`
    Thank you ${userfullname} for signing up, 
    your login credentials are 
    login: ${useremail}
    password: ${password}  
  `)
});

app.listen(7777, function() {
  console.log("Started listening on port", 7777);
})

最佳答案

您需要确保您的请求处理程序 return a response , 根据要求。

例如,您可以发送一个 JSON 响应以向客户端/浏览器发送信号,表明请求已被处理并通过执行以下操作完成:

app.post('/signin', function(req, res) {
  let useremail = req.body.email;
  let password = req.body.password;
  if (useremail && password) {
    console.log('success')
  } else {
    console.log('Failure');
  }

  /* 
  Add this: send a json response to client 
  */
  res.json({ message : 'sign in request completed' });
});

app.post('/signup', function(req, res) {
  let userfullname = req.body.fullname;
  let useremail = req.body.email;
  let password = req.body.password;
  console.log(`
    Thank you ${userfullname} for signing up, 
    your login credentials are 
    login: ${useremail}
    password: ${password}  
  `)

  /* 
  Add this: send a json response to client 
  */
  res.json({ message : 'sign up request completed' });
});

除了json() , express 框架的 Response interface提供其他响应方式,例如 send()end()这可能更适合您的用例。

这里的关键概念是传入请求应该有一个相应的响应发送回客户端。这允许客户端正确响应发送到您的服务器的网络请求并从中恢复。

关于javascript - 如何从 axios promise 获取控制台日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57282223/

相关文章:

javascript - 从 HTML 中移除 JavaScript 代码

forms - react : Dynamically generated <select> elements - setting 'selected' state in a mapped element

css - 如何在分页中的移动 View 中显示更少的页面?

vue.js - axios 下载带有原始正确扩展名的文件

javascript - VueJs属性不显示在模板中但存在于数据中

vue.js - 从 axios 访问不记名 token

javascript - 从 CLI 或 Web 调用时 PhantomJS 挂起

javascript - 根据每个值的内容过滤掉 JSON 数组

javascript - React 中的重复键无法解决问题。遇到两个 child 拥有同一把 key

javascript - 如何动态设置 Angular JS 页面的标题?