【问题标题】:Unable to parse JSON in react for post method无法解析 JSON 以响应 post 方法
【发布时间】:2018-01-21 19:23:38
【问题描述】:

我有一个 post 函数,我在其中向服务器发送 JSON 响应以将属性的可见性更改为 true/false。发送的响应格式为: { "keywordId":"KW-0604", "visibility": "False" }

我的帖子功能如下,正在ComponentWillUpdate()内调用

keyadd(){
     axios.post('http://localhost:8080/visualization/interact/keyword/update', 
    { keywordId: this.state.visible_keywords,  visibility: 'False' })
    .then(function (response) {
      console.log(response);
    })
    .catch(function (error) {
      console.log(error);
    });
   }

对于keywordId,我传递来自this.state.visible_keywords 的json 字符串,我通过在仪表板中的两个表之间拼接数据来获得该字符串。

this.state.visible_keywords 以以下格式获取数据:[{"keywordId":"KW-0604","keywordName":"Branched-acid biosynthesis"}],这是一个有效的 JSON 响应。

但是,从上面的 JSON 字符串中,我只想发送 keywordID。我尝试使用JSON.stringfy()JSON.parse() 函数但没有成功。

使用我给定的一组 post 函数,我知道服务器会以错误响应进行响应。

我一直在尝试解决这个问题,但徒劳无功。

问候,

【问题讨论】:

  • console.log(this.state.visible_keywords) 的输出是什么?
  • 控制台的响应是{ keywordId: "KW-0604", keywordName: "Branched-acid biosynthesis" }
  • {keywordId:this.state.visible_keywords[0].keywordId,visibility: 'False'} 。这行不通吗??据我了解
  • @stack26 这对我有帮助。非常感谢。

标签: javascript arrays json reactjs post


【解决方案1】:

这应该可以工作

{keywordId:this.state.visible_keywords[0].keywordId,visibili‌​ty: 'False'} 

【讨论】:

    【解决方案2】:

    你基本上可以这样做:

    axios.post('http://localhost:8080/visualization/interact/keyword/update'
            , { keywordId: Object.values(this.state.visible_keywords)[0], visibili‌​ty: 'False'})
          .then(function (response) {
            console.log(response);
          })
          .catch(function (error) {
            console.log(error);
          });
    

    因为

    this.state.visible_keyword

    已经是JSON了,解析也没用。

    请注意,如果您执行以下操作:

    axios.post('http://..yourURL', this.state.visible_keywords)...
    

    完全正确,只是证实了我所说的。

    【讨论】:

    • Object.values(this.state.visible_keywords)[0]。我收到类似于this.state.visible_keywords 的响应。但是通过在axios.post 中使用{keywordId:this.state.visible_keywords[0].keywordId,visibili‌​ty: 'False'} 解决了这个问题
    猜你喜欢
    • 2018-06-19
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2022-01-12
    • 2017-05-08
    相关资源
    最近更新 更多