Axios无法从本地json文件获取数据

时间:2018-09-29 15:44:03

标签: reactjs axios

我正在使用axios库从本地json文件中获取数据,但是当我发出get请求时,它给了我错误404。 这是我的文件结构。

enter image description here

我正在使用这段代码来获取数据。

  import React from 'react';
import axios from 'axios';
class Login extends React.Component{
  constructor() {
    super();
    this.handleSubmit = this.handleSubmit.bind(this);
    this.state = { username: null, password: null };
  }

 handleSubmit = (e)=>{
   e.preventDefault();
   var username=e.target.username.value;
   var password=e.target.password.value;
   axios.get('../data.json')
   .then((res)=>{
     console.log(res.data);
   }).catch((err)=>{
     console.log(err);
   })

 }

  render(){

    return(
      <form onSubmit={this.handleSubmit}>
      <input id="username" name="username" type="text" />
      <input id="password" name="password" type="text" />
      <button>Login!</button>
      </form>
    );
  }
}

export default Login;

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

如果使用 create-react-app 命令创建了此文件结构,则必须将json文件添加到公用文件夹中。然后像下面这样更改axios路径

 handleSubmit = (e)=>{
   e.preventDefault();
   var username=e.target.username.value;
   var password=e.target.password.value;
   axios.get('./data.json')
   .then((res)=>{
     console.log(res.data);
   }).catch((err)=>{
     console.log(err);
   })

答案 1 :(得分:3)

您是否在服务器上运行 JSON 文件。试试这个命令。

json-server -w -p 3001 data.json - 在端口 3001 上运行

import React from 'react';
import axios from 'axios';
class Login extends React.Component{
  constructor(){
    super();
    this.handleSubmit = this.handleSubmit.bind(this);
    this.state = {username: null, password: null };
  }

 handleSubmit = (e)=>{
   e.preventDefault();
   var username=this.refs.username.value;
   var password=this.refs.password.value;
   
    axios.get('../data.json')
    .then((res)=>{
     console.log(cb(res.data));//included the call back method
    }
    ).catch((err)=>{
     console.log(err);
    }
    )
    }

  render(){
      return(
      <form>
      <input ref="username" type="text" />
      <input ref="password" type="text" />
      <input type="submit" value="Login" onClick={this.handleSubmit} />
      </form>
    );
  }
}

export default Login;

希望这有效,经过试验和测试

相关问题