【问题标题】:how to create a post request fetching data如何创建获取数据的发布请求
【发布时间】:2020-10-16 17:00:35
【问题描述】:

当用户点击商家名称时,需要将其保存为收藏夹,获取商家 ID 和用户 ID 并将其插入数据库。后端已准备好获取 post 请求,但我还没有弄清楚如何发送该数据。

这是我一直使用的代码,用于获取带有用户 ID 和业务 ID 的最喜欢的业务(在后端有一个查询 SELECT * from business 等...)

如何更改此代码以发出 POST 请求? (插入一个新的最爱业务)假设在后端有一个带有 INSERT INTO ....的查询)

saveBusiness = (e) => {
    fetch("http://localhost:3030/favbusiness/" + this.state.selectedUserid + "/" + this.state.selectedBusiness)
    .then((response) => {
      return response.json();
    })
    .then(data => {
        let favBusinessFromApi = data.map(favorite => {
          return { value: favorite.businessid }
        });
        this.setState({
          favoriteBusiness: favBusinessFromApi
        });
    .catch(error => {
      console.log(error);
    });
  }  ```

【问题讨论】:

标签: javascript reactjs post


【解决方案1】:

你需要在 URL 之前添加 OPTIONS 来表示它是一个 POST,像这样:

saveBusiness = (e) => {
    const OPTIONS = {
        method: 'POST'
    }
    fetch("http://localhost:3030/favbusiness/" + this.state.selectedUserid + "/" + this.state.selectedBusiness, OPTIONS)
    .then((response) => {
      return response.json();
    })
    .then(data => {
        let favBusinessFromApi = data.map(favorite => {
          return { value: favorite.businessid }
        });
        this.setState({
          favoriteBusiness: favBusinessFromApi
        });
    .catch(error => {
      console.log(error);
    });
  }

如果您需要更多选项或更多信息:https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

【讨论】:

    【解决方案2】:

    您可以简单地添加method: 'POST',

    saveBusiness = (e) => {
        fetch("http://localhost:3030/favbusiness/" + this.state.selectedUserid + "/" + this.state.selectedBusiness,{
      method: 'POST', 
    })
        .then((response) => {
          return response.json();
        })
        .then(data => {
            let favBusinessFromApi = data.map(favorite => {
              return { value: favorite.businessid }
            });
            this.setState({
              favoriteBusiness: favBusinessFromApi
            });
        .catch(error => {
          console.log(error);
        });
      };
    

    阅读有关 fetch 以及如何传递标头 Here 的更多信息

    【讨论】:

    【解决方案3】:
    saveBusiness = (e) => {
        fetch("http://localhost:3030/favbusiness/" + this.state.selectedUserid + "/" + this.state.selectedBusiness, {
        method: 'POST',
        body: JSON.stringify(e.data), // this should be the data that you want to post
    })
        .then((response) => {
          return response.json();
        })
        .then(data => {
            let favBusinessFromApi = data.map(favorite => {
              return { value: favorite.businessid }
            });
            this.setState({
              favoriteBusiness: favBusinessFromApi
            });
        .catch(error => {
          console.log(error);
        });
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多