Axios: не идет в метод catch с ошибкой - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть функция для редактирования названия контракта.Я вызываю запрос axios к внутреннему API с определенным идентификатором.Для каждого случая я вызываю сообщение-подсластитель.

axios({
       url: '/api/contract/' + id,
       method: 'put',
       data: {
             name: name
       }
       }) .then((response) => {
          this.$emit('fetchAll');
          swal({
               title: "Success!",
               icon: "success"
          });
       }) .catch(error => {
          this.errors = error.response.data.errors;
          swal({
             title: "Error",
             text: error.response.data.message,
             icon: "error"
       });
});

С ответом:

403: You are not authorized to edit this contract.

network console

Обработка ошибок в контроллере Laravel:

if (Bouncer::cannot('contract-destroy'))
    abort('403', "You are not authorized to delete this contract");

Даже при наличии ошибки в запросе появляется сообщение об успехе.

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

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

axios({
   url: '/api/contract/' + id,
   method: 'put',
   data: {
         name: name
   }
   }) .then(({data}) => { <-------instead of (response)
      this.$emit('fetchAll');
      swal({
           title: "Success!",
           icon: "success"
      });
   }) .catch(error => {
      this.errors = error.response.data.errors;
      swal({
         title: "Error",
         text: error.response.data.message,
         icon: "error"
   });

});

0 голосов
/ 27 сентября 2018

Для ваших подсластителей измените ключ icon на type.В противном случае я думаю, что сообщение об успехе отображается по умолчанию.Таким образом, код должен читать

axios({
       url: '/api/contract/' + id,
       method: 'put',
       data: {
             name: name
       }
       }) .then((response) => {
          this.$emit('fetchAll');
          swal({
               title: "Success!",
               type: "success"
          });
       }) .catch(error => {
          this.errors = error.response.data.errors;
          swal({
             title: "Error",
             text: error.response.data.message,
             type: "error"
       });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...