Ajax запрос идентификации кода статуса для выборки в Reactjs - PullRequest
0 голосов
/ 26 апреля 2020

Я отправляю данные формы в API с помощью reactjs, я пытаюсь найти ответ, чтобы я мог обработать некоторые ошибки в своей функции извлечения. Мой ответ следующий, но это 200:

{}

Итак, как бы я поместил это в код ответа?

Моя функция отправки:

handleSubmit(e) {
    e.preventDefault();
  /*global fetch */
    this.setState({ loading: true});
    fetch('https://bac1eal279.execute-api.eu-west-2.amazonaws.com/dev',{
        method: "POST",
        body: JSON.stringify(this.state),
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json',
        },
      }).then(
        (response) => (response.json())
       ).then((response)=>{       
    });
  }

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Fetch обещания отклоняются только с TypeError, когда происходит ошибка сети. Поскольку ответы 4xx и 5xx не являются сетевыми ошибками, нечего ловить. Вам нужно будет выдать ошибку самостоятельно, чтобы использовать Promise#catch.

, здесь вы можете проверить состояние объекта ответа:

handleSubmit(e) {
   e.preventDefault();
   /*global fetch */
   this.setState({ loading: true});
   fetch('https://bac1eal279.execute-api.eu-west-2.amazonaws.com/dev',{
      method: "POST",
      body: JSON.stringify(this.state),
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
      },
   }).then((response) => {
    if (response.status === 200) {
       return response.json();
    } else {
      throw new Error('Something went wrong');
    }
  })
  .then((responseJson) => {
    // Do something with the response
  })
  .catch((error) => {
     console.log(error)
  });
}
0 голосов
/ 26 апреля 2020

Вы ничего не возвращаете из своей корзины. Потому что ваш второй .then пуст.

handleSubmit(e) {
    e.preventDefault();
  /*global fetch */
    this.setState({ loading: true});
    fetch('https://bac1eal279.execute-api.eu-west-2.amazonaws.com/dev',{
        method: "POST",
        body: JSON.stringify(this.state),
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json',
        },
      }).then(
        (response) => (response.json())
       ).then((response)=>{ 
            alert("Message Sent.");
            this.resetForm();
            return response; })
       .catch((e)=> {
            alert("ERROR");
            console.log(e);
       })
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...