我正在等待服务器成功的JSON:
{ “....”}
实际行为 我得到了
SyntaxError:位于0的JSON中的意外标记b
b是单词“badlogin”的第一个字母。它在发送错误的userName和password组合时响应服务器。但是当我在同一地址上使用具有相同键值组合的Postman时,我从服务器获得正确的rosponse。
重现步骤
fetch('http://....', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
userName: "react",
password: "123",
})
}).then((response) => response.json())
.then((responseJson) => {
console.log(responseJson.message);
if(responseJson.success === true) {
alert('successufuly loged');
}
else{
console.log(responseJson.message);
alert(responseJson.message);
}
})
}
}
答案 0 :(得分:1)
您正在尝试解析字符串。这是错误。而不是总是解析json,只需添加一个clausule来检查请求是否成功
}).then((response) => {
if(!response.ok) {
// handle your error here and return to avoid to parse the string
return
}
return response.json()
})
.then()
答案 1 :(得分:1)
看起来你得到的回答不是json
尝试检查您首先得到的答案:
.then((response) => response.text())
.then((responseJson) => {
console.log(responseJson);
}
答案 2 :(得分:0)
我通过使用FormData准备发送数据来解决这个问题:
......
login = () => {
var formData = new FormData();
formData.append('username', 'react');
formData.append('password', '123');
fetch('http://......', {
method: 'POST',
body: formData
........