“ 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");
})
}
}
答案 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时)。