首页 > 解决方案 > 响应未转换为 JSON

问题描述

我正在尝试从 React 表单中获取信息并将其发布到我的 Rails 数据库中,但我收到一个错误"unexpected token '<' at position 0",这意味着我的响应仍然是 HTML 而不是 JSON。

这是我的代码:

export const createCar = car => {
return dispatch => {
    return fetch(`${API_URL}/cars/create`, {
        method: "POST",
        headers: {
            'Content-type': 'application/json'
        },
        body: JSON.stringify({ car: car })
    })
    .then(response => response.json())
    .then(car => {
        dispatch(addCar(car))
        dispatch(resetCarForm())
    })
    .catch(error => console.log(error + 'createCar POST failed'))
}

}

它没有转换为 JSON 有什么原因吗?

此外,我似乎无法将调试器放入我的代码中,或者至少在这个函数中 - 我需要导入它还是什么?

标签: ruby-on-railsjsonreactjs

解决方案


我认为您的服务器正在向您发送 HTML,然后您尝试将其解析为response.json()

在此块中使用 try/catch:

export const createCar = car => {
return dispatch => {
    return fetch(`${API_URL}/cars/create`, {
        method: "POST",
        headers: {
            'Content-type': 'application/json'
        },
        body: JSON.stringify({ car: car })
    })
    .then(response => {
         try {
            return response.json()
         } catch(error) {
            console.error(error);
         }
    })
    .then(car => {
        dispatch(addCar(car))
        dispatch(resetCarForm())
    })
    .catch(error => console.log(error + 'createCar POST failed'))
}

推荐阅读