3
respostas

$http.post não entra no .error

Olá, estava fazendo testes e vi que o código de post não entra no .error se houver um erro na url por exemplo.

$http.post('/v1/', $scope.foto)
            .success(function() {
                $scope.foto = {};
                $scope.mensagem = 'Foto adicionada com sucesso!';
            })
            .error(function(erro) {
                console.log(erro);
                $scope.mensagem = 'Não foi possível cadastrar a imagem!';
            })
        }

A imagem não é adicionada porém a mensagem continua sendo de sucesso.

3 respostas

Fala ai Adria, tudo bem? Qual erro você está tentando simular? Qual erro a API está retornando?

Olhando o código tudo parece estar ok.

Pode ser que o erro que esteja disparado não chame o error.

Fico no aguardo.

Digamos por exemplo, que na hora eu errei o caminho, o caminho correto é "/v1/fotos" porém errei ele, como no código abaixo.

$scope.submeter = function() {
        if ($scope.formulario.$valid) {
            $http.post('/fotos', $scope.foto)
            .success(function() {
                $scope.foto = {};
                $scope.mensagem = 'Foto adicionada com sucesso!';
            })
            .error(function(erro) {
                console.log(erro);
                $scope.mensagem = 'Não foi possível cadastrar a imagem!';
            })
        }
    };

Naturalmente, ele teria que entrar na função error porém isso não acontece. Ele entra succes pois me manda a mensagem de sucesso e não a de erro. Ele não cadastra a foto mas a mensagem não está vindo correta.

Fala Adria, eu não sei qual é a versão do Angular que você está utilizando, mas, à partir da versão 1.6 foi depreciado o uso de .sucess e .erro para favorecer o uso e padrão de .then e .catch.

Talvez vale você mudar o .sucess para .then e .erro para .catch.

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software