抓取不起作用

时间:2018-03-14 10:14:24

标签: react-native

我正在等待服务器成功的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);
    }
  })  
}

}

3 个答案:

答案 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
........