Axios Post 200 响应后不返回数据

Posted

技术标签:

【中文标题】Axios Post 200 响应后不返回数据【英文标题】:Axios Post returning no data after 200 response 【发布时间】:2018-10-11 23:15:35 【问题描述】:

我正在玩 React(我是新手)并尝试向我的 Rails API(在 localhost atm 上)发出发布请求。我还编写了 post 函数来 console.log 我的响应,我始终收到 200 响应,确认对象已在我的 API 中成功创建。但是,我想通过我的http响应来确认是否传递了正确的参数,并且似乎没有正文。不确定我是否在我的发布请求中丢失了,或者我在发出发布请求后是否错误地更新了我的状态。

我的反应组件

import React,  Component  from 'react';
import axios from 'axios'
import update from 'immutability-helper'
import BusinessForm from './businessForm'

const API = 'http://localhost:3001/api/v1/businesses/'

class NewBusinesses extends Component    




 state = 
    businesses: [],
    editID: null


    
  check = () => 
    console.log(this.state.businesses)
  
  addNew = () => 
    axios.post(
      API,
        
          business:
           name: 'NEW BUSINESS',
            address: '',
            city: '',
            zip: '',
            wifi: '',
            phone: '',
            bathroom: ''
           
        
    )
    .then(response => 
      console.log(response)
        const businesses = update(this.state.businesses, 
          $splice: [[0,0,response.data]]
        )
        this.setState(businesses: businesses,
        editID: response.data.id)
        )
      .catch(error => console.log(error))
  

我onClick函数后的控制台(console.log(response))

data: "", status: 200, statusText: "OK", headers: …, config: …, …

config:adapter: ƒ, transformRequest: …, transformResponse: …, timeout: 0, xsrfCookieName: "XSRF-TOKEN", …
data:""
headers:
content-type: "text/html", cache-control: "no-cache"
request
:
XMLHttpRequest onreadystatechange: ƒ, readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, …
status:200
statusText:"OK"
__proto__:Object

【问题讨论】:

在你的 API 中的 rails 控制器是否在向其发送 post 请求后返回数据? @aaron.v 感谢您的快速帮助! 【参考方案1】:

没关系!这个问题出在 API 方面,不是因为我在 React 应用程序中所做的任何事情。我必须添加行

render json:@business

在我的 Rails API 中创建方法

【讨论】:

不确定这是否适用于您,但您也可能需要为发布请求执行此操作。 axios.defaults.headers.common['X-CSRF-Token'] = yourCSRFTokenHere; axios.defaults.headers.common.Accept = 'application/json'; ^^ 好喊布兰登。如果您将 respond_to 与 js 格式一起使用,请务必正确接受标头。没有它,Rails 将以默认的html 格式响应。

以上是关于Axios Post 200 响应后不返回数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从axios返回数据响应

Azure APIM 在预检和从 axios 发出的 GET 请求时返回空响应正文,状态代码为 200

VueJS 方法没有从 Axios 返回响应

axios 不会分别返回响应和错误

从 axios 的响应头中获取数据

如何根据响应的错误代码返回自定义 axios 响应