【问题标题】:Passing data from front end to route in backend React将数据从前端传递到后端 React 中的路由
【发布时间】:2019-07-20 10:10:35
【问题描述】:

我目前是使用 React 和 express 的新手,我希望发送从表单收到的数据。我想发回的数据是处于状态的 UserInfo 或电子邮件。但是我非常不确定我应该如何处理这个请求。

class ForgotPassword extends Component {
    constructor() {
        super()

    this.state = { 
        email:'',
    }

    this.handleSubmit = this.handleSubmit.bind(this)
    this.handleChange = this.handleChange.bind(this)
}

    componentDidMount = () =>{
        // this.fetchUserInfo();
    }

    handleChange = (e) => {
        this.setState ({
            [e.target.id]: e.target.value
        })
        console.log(this.state);
    }

    handleSubmit = async (e) => {
        e.preventDefault();

        const userInfo = { 
            email : this.state.email 

        };  



            fetch("/forgotpassword", {
              method: "POST",
              body: JSON.stringify(userInfo),
              headers: { "Content-Type": "application/json" }
            })
              .then(response => {
                return response.json();
              })
              .then(jsonData => {
                console.log(jsonData);
              })
              .catch(err => {
                console.log("Error with data fetch " + err);
              });
          };

This is my form...


<div className='row'>
                    <div className='col'></div>
                    <div className='col card form'>
                    <h1 id="title">Reset Password</h1>
                    <h5 id="passinstruc">Please enter your email to reset your password</h5>
                        <form id="forgotpass" onSubmit={this.handleSubmit}>
                            <div className="form-group">
                                <label htmlFor="exampleInputEmail1">Email </label>
                                <input onChange={this.handleChange} type="email" className="form-control" id="email" aria-describedby="emailHelp" placeholder="Enter email" value={this.state.email} />
                                <small id="emailHelp" className="form-text text-muted">We'll never share your email with anyone else.</small>
                            </div>

                            <button id="loginbtn" type="submit" className="btn btn-primary btn-lg btn-block" >Submit</button>
                            <br/>
                            <div className='division'>
                                <Link  to="/register" className='btn btn-primary btn-lg btn-block'  id="registerbtn" >  Create your account here</Link>
                            </div>


                        </form>
                    </div>

在我的后端,我收到一条 POST /forgotpassword 404 消息,但我不知道为什么。帮助将不胜感激。

这是我将发送信息的后端路线

var express = require('express');
var router = express.Router();
var connection = require ('../connection');
var email = require ('./sendEmail');



router.post('/forgotpassword', function(req, res, next) {

    console.log(req.email);

    var userEmail = req.email;

    var text = "Follow the instructions below to reset your password"

    email.sendEmailWithTemplate(userEmail,'PetS.o.S Password Reset', text);
});

【问题讨论】:

  • 考虑到您在本地使用并且 express 也在本地运行,我认为您需要在 fetch 中编写完整的 URL,例如 "http://localhost:3000/forgotpassword"

标签: reactjs express


【解决方案1】:

要发送数据,您需要服务器的域名或 IP 地址。

一旦你得到它,你就可以使用 jQuery.get - https://api.jquery.com/jQuery.get/

或 jQuery.post - https://api.jquery.com/jQuery.post/

或者,如果您不使用 jQuery,请使用 XMLHttpRequest - https://www.w3schools.com/xml/xml_http.asp

【讨论】:

    【解决方案2】:

    不是在正文中发送数据,而是在响应中发送它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多