>source
서비스
app.service('service', function ($http, $q) {
    //Testing code
    var self = this;
    self.login = (user) => {
        let defer = $q.defer();
        let login  = {
            username: user.username,
            password: user.password
        };
        $http({
            method: 'POST',
            url: `http://1.1.1.1/login`,
            data: login
        }).then(
            (response) => {
                defer.resolve(response.data)
            },
            (error) => defer.reject(error)
        );
        return defer.promise;
    };
});

<시간> 컨트롤러
angular.module('app').controller('controller',
    ['$scope', '$rootScope', '$location', 'service','$log' ,'$q',
    function($scope, $rootScope, $location, service, $log, $q) {
        console.log('controller called');
        $scope.changeView = function(view) {
            $location.path(view);
        };
        $scope.user = {username: 'john@nuc.com', password: 'qqq'};
        console.log($scope.user);
        service.login($scope.user)
        .then(
            (response) => {
                console.log('success');
            },
            (error) => console.log('error' + error.data)
        );
    }]);

<시간> 결과

이것들이 보인다

{location: "http://ddddd.com/hom…zg2fQ.D9pDqUBD3bcKnH_bPoGCpd-odxJ48LUZTKOGZZnV0Y0"}

왜 내가 error 에 빠지는 지 모르겠다  사례 섹션이지만 서버에서 적절한 응답을 얻는 것 같습니다.

다른 사람이 이것에 불을 밝힐 수 있습니까?


  • 답변 # 1

    이 서비스는 지연된 안티 패턴을 사용합니다. 이것이 문제의 원인은 아니지만 문제를 해결하고 console.log 를 추가하십시오.  진술 :

    onboardingApp.service('apiService', function ($http, $q, $localStorage) {
        //Testing code
        var self = this;
        self.login = (user) => {
            ̶l̶e̶t̶ ̶d̶e̶f̶e̶r̶ ̶=̶ ̶$̶q̶.̶d̶e̶f̶e̶r̶(̶)̶;̶
            let login  = {
                username: user.username,
                password: user.password
            };
            return $http({
                method: 'POST',
                url: `http://ddd.com/login`,
                data: login
            }).then(
                (response) => {
                    console.log("success", response);
                    setAuthToken(response);
                    return response.data;
                },
                (error) => {
                   console.log("error",error);
                   throw error;
                }
            );
        };    
    });
    
    

    이를 통해 문제를 진단 할 수 있습니다.

    <시간> 와이즈 비즈

    성공적인 약속에 대한 거부 된 약속을변환하려면 간단히

    After succes login, it should return status code 200 instead of 302. how do I adjust your code to accept 302 as a success instead of an error ?

     거부 처리기의 값 :

    return
    
    
    return $http({ method: 'POST', url: `http://ddd.com/login`, data: login }).then( (response) => { console.log("success", response); setAuthToken(response); return response.data; }, (error) => { console.log("error",error); if (error.status==302) { console.log("Converting erroneous API response"); error.status==200; return error.data; }; //ELSE throw error; } );

  • 이전 apache spark - 문자열 열의 단어 수와 다른 열의 값 합계를 비교
  • 다음 SQL 문에서 OR 사용