JSON解析错误:无法识别的令牌“ <”解析-React Native

时间:2019-12-04 16:47:40

标签: javascript reactjs react-native

  

“ JSON解析错误:无法识别的令牌'<'”

点击 API 时显示错误。 (响应采用 JSON 格式。)我正在尝试构建登录表单,但无法从数据库服务器检索用户数据。

constructor(){
super()
    this.state={
         email:'',
         password:'',
    }
}
handleLoginUser(){
            fetch('https://"mygoogleclouddatabaseip"/users/login', {
                    method: 'POST',
                    headers: {
                      Accept: 'application/json',
                      'Content-Type': 'application/json',
                    },
                    body: JSON.stringify(this.state)})
                    .then(response => {
                        console.log(response);
                        return response.json();})
                    .then(responseData => {
                         console.log(responseData);
                         let result = JSON.parse(responseData);
                         return result;})
                    .then(data => {
                        if (result.success){
                            alert("Login successful");
                        }
                        else
                            alert("Unable to Login");
                    })
               }
}

1 个答案:

答案 0 :(得分:3)

问题是您的response不是有效的json,尝试执行response.json()时会出现错误。

请对其进行调试,并处理response不是有效json的情况。

或者其他问题可以在这里

let result = JSON.parse(responseData);

如果responseData已经是一个javascript对象,则使用JSON.parse会给您一个错误;如果response.json()有效,则意味着JSON.parse是不必要的,并且错误。

您可能会问

  

为什么不需要JSON.parse

因为response.json()将响应转换为javascript对象,而JSON.parse也这样做。

正确的方法是使用response.json()而不是JSON.parse(仅当响应是有效的json时)。