Как я могу поймать ошибку ответа PHP с Axios - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу поймать ошибки PHP-ответа с помощью Axios.

У меня есть простой PHP-код, подобный этому, чтобы попытаться отправить ошибку в мой js-файл:

header('Content-type: application/json; charset=utf-8');
$test = array (
    'error' => 'test error!'
);  
echo json_encode($test);
die();

И мои js сВот такие аксиозы:

axios({
      method: 'post',
      responseType: 'json',
      url: 'test.php'
      data: '1234'
    })
    .then((response) => {
      if ( response.data.error ) {
        console.log(response.data.error) // I show error here            
      }
      else {            
        console.log(response.data);            
      }
    })
    .catch((error) => {          
      console.log (error); // it's possible to show error here?
    }
)

Я не могу показать ошибку внутри catch Я думаю, потому что я сделал echo json_encode, а Axios не может различить ошибку и нормальный ответ.

Есть ликакой-то способ отловить ошибки внутри catch?

1 Ответ

0 голосов
/ 11 декабря 2018

Если вы хотите получить ошибку в блоке перехвата, ваш PHP-скрипт должен вернуть код состояния HTTP, отличный от 2xx Success с ответом об ошибке.

Итак, в вашем PHP-скрипте выследует добавить код состояния HTTP.Пример: Как отправить код ответа HTTP

Поскольку axios обрабатывает ответ только как ошибку и передает его в блок catch, когда он получает код состояния HTTP, который отсутствует в Список успеха 2xx

Пример из axios:

axios.get('/user/12345')
  .catch(function (error) {
    if (error.response) {
      // The request was made and the server responded with a status code
      // that falls out of the range of 2xx
      console.log(error.response.data);
      console.log(error.response.status);
      console.log(error.response.headers);
    } else if (error.request) {
      // The request was made but no response was received
      // `error.request` is an instance of XMLHttpRequest in the browser and an instance of
      // http.ClientRequest in node.js
      console.log(error.request);
    } else {
      // Something happened in setting up the request that triggered an Error
      console.log('Error', error.message);
    }
    console.log(error.config);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...