我是新来做出反应并做出承诺的人,我目前遇到一个我不确定的错误,我正在调用API,但在承诺中被拒绝。在代码中,我已在控制台中记录了API端点,以查看错误是否在那儿,但可以正常工作。
下面是我的代码;
export function LoginAPICall(type, firstname, email, password){
let baseURL = 'http://40.121.111.11:8020/';
return new Promise((resolve, reject) => {
console.log(baseURL + type + '/' + firstname + '/' + email + '/' + password);
return fetch(baseURL + type + '/' + firstname + '/' + email + '/' + password)
.then((response) => response.json())
.then((responseJson) => {
resolve("Success");
return responseJson.json();
})
.catch((error) => {
console.log("Error");
reject("Ting is messed");
});
})
}
在这里是用户;
login = event => {
event.preventDefault();
console.log(this.state.firstname);
LoginAPICall('login', this.state.firstname, this.state.email, this.state.password).then(( result ) => {
console.log(result);
})
}
错误;
Uncaught (in promise) SyntaxError: Unexpected token L in JSON at position 0
对此代码的任何帮助/建议将不胜感激!
答案 0 :(得分:0)
当返回的数据存在问题时通常会发生此错误(看起来它可能不是正确的JSON,因此无法使用.json()正确解析),但是您可能要尝试{{ 1}},而不只是response.data.json()
,
我还将尝试在console.log响应中查看响应内容。
答案 1 :(得分:0)
首先,提取将返回一个承诺,因此您不需要另一个。您也不能两次调用.json()(我认为)。
export default LoginAPICall = (type, firstname, email, password) =>
fetch(`http://40.121.111.11:8020/${type}/${firstname}/${email}/${password}`)
.then(response => response.json())
.catch(error => console.log(error));
如果这不起作用,那是因为您没有从后端获得有效的JSON响应。