首页 > 解决方案 > React 应用程序表单数据未插入到 mysql 表中

问题描述

我正在尝试通过 axios 连接 mysql 表以响应表单。React 应用程序在端口 8081 上运行,mysql 服务器在 8080 上运行。当在邮递员中测试 api 时,数据被添加到 mysql 表中,但每当我通过反应表单尝试它时都会失败。我假设我的反应应用程序中有一些错误,所以发布它的代码,如果你们需要任何东西,请告诉我。

反应形式


import React, { Component } from 'react'
import devicedataservice from "../services/services"

class CreateProject extends Component{
    constructor(props){
        super(props);
            this.state={
                serialno:'',
                brand:'',
                modelname:'',
                submitted:false
            };
        this.onChangeSerialno=this.onChangeSerialno.bind(this);
        this.onChangeBrand=this.onChangeBrand.bind(this);
        this.onChangeModelName=this.onChangeModelName.bind(this);
        this.handleSubmit=this.handleSubmit.bind(this);
    }
    
   onChangeSerialno(e){
       this.setState({
           serialno:e.target.value
       });
   }
   onChangeBrand(e){
       this.setState({
           brand:e.target.value
       });
   }
   onChangeModelName(e){
       this.setState({
           modelname:e.target.value
       });
   }
   handleSubmit(e){
      
       var data={
           serialno:this.state.serialno,
           brand:this.state.brand,
           modelname:this.state.modelname
       };
      
  
      devicedataservice.create(data)
        .then(response => {
          this.setState({
            
            serialno:response.data.serialno,
            brand:response.data.brand,
            modelname:response.data.modelname,
  
            submitted: true
          });
        
        })
        .catch(e => {
         
        });
    }
  
    render(){
        return(
            <div>
                <div className="container ">
                    <form className="white">
                        <h1>
                            <h5 className="grey-text text-darken-3">Create Project</h5>
                           
                            <div className="input-field">
                                <label htmlFor="serialno">Serial Number</label>
                                <input  id="serialno" value={this.state.serialno} type ="text" name="serialno" onChange={this.onChangeSerialno}></input>
                            </div>
                            <div className="input-field">
                                <label htmlFor="brand">Brand</label>
                                <input  id="brand" value={this.state.brand} type ="text" name="brand" onChange={this.onChangeBrand}></input>
                            </div>
                            <div className="input-field">
                                <label htmlFor="modelname">Model Name</label>
                                <input  id="modelname" value={this.state.modelname} type ="text" name="modelname" onChange={this.onChangeModelName}></input>
                            </div>
                            <div className="input-field">
                                <button onSubmit={this.handleSubmit} className="btn blue lighten-1 z-depth-0">Add Project</button>
                            </div>  
                        </h1>
                    </form>
                </div>
            </div>
        )
    }
}
export default CreateProject

服务.js

import http from "../http-common";

class DeviceDataService {
  create(data) {
    return http.post(`/devices`, data);
  }
  
  getAll() {
    return http.get("/devices");
  }

  get(serialno) {
    return http.get(`/devices/${serialno}`);
  }

 

  update(serialno, data) {
    return http.put(`/devices/${serialno}`, data);
  }

  delete(serialno) {
    return http.delete(`/devices/${serialno}`);
  }

  deleteAll() {
    return http.delete(`/devices`);
  }

}

export default new DeviceDataService();

axios(http-common.js)

import axios from "axios";

export default axios.create({
  baseURL: "http://localhost:8080/api",
  headers: {
    "Content-type": "application/json"
  }
});

标签: reactjsaxiossequelize.js

解决方案


推荐阅读