[javascript] $ http.get (…) .success는 함수가 아닙니다.

이 코드가 있습니다.

app.controller('MainCtrl', function ($scope, $http){
  $http.get('api/url-api')
    .success(function (data, status, headers, config){
     }
}

내 로컬 환경에서는 정상적으로 작동하지만 서버에서는 다음 오류를 반환합니다.

유형 오류 : $ http.get (…). success는 함수가 아닙니다.

어떤 아이디어? 감사



답변

.success구문은 각도 v1.4.3에 대한 올바른까지했다.

Angular v.1.6까지 버전의 경우 thenmethod 를 사용해야 합니다. 이 then()메서드는 두 개의 인수를 취합니다. a successerror응답 객체와 함께 호출되는 콜백입니다.

then()메서드를 사용하여 callback반환 된 promise.

이 같은:

app.controller('MainCtrl', function ($scope, $http){
   $http({
      method: 'GET',
      url: 'api/url-api'
   }).then(function (response){

   },function (error){

   });
}

여기에서 참조를 참조 하십시오.

Shortcut 방법도 사용할 수 있습니다.

$http.get('api/url-api').then(successCallback, errorCallback);

function successCallback(response){
    //success code
}
function errorCallback(error){
    //error code
}

응답에서 얻은 데이터는 JSON형식 이어야 합니다.
JSON데이터 를 전송하는 훌륭한 방법이며 AngularJS 내에서 사용하기 쉽습니다.

2 사이의 큰 차이는 즉 .then()호출 반환 promise(A에서 반환 된 값으로 해결 callback하면서) .success()등록하는 전통적인 방법입니다 callbacks및 반환하지 않습니다 promise.


답변

이것은 중복 될 수 있지만 위의 가장 많이 투표 한 답변에 따르면 .then(function (success)Angular 버전에서는 작동하지 않았습니다 1.5.8. 대신 response블록 내부에서 response.data내가 찾고 있던 json 데이터를 얻었습니다.

$http({
    method: 'get',
    url: 'data/data.json'
}).then(function (response) {
    console.log(response, 'res');
    data = response.data;
},function (error){
    console.log(error, 'can not get data.');
});


답변

2017 년 10 월 21 일 현재 AngularJs 1.6.6을 사용하려는 경우 다음 매개 변수가 .success로 작동하며 고갈되었습니다. .then () 메서드는 응답 객체와 함께 호출되는 응답과 오류 콜백의 두 가지 인수를 사용합니다.

 $scope.login = function () {
        $scope.btntext = "Please wait...!";
        $http({
            method: "POST",
            url: '/Home/userlogin', // link UserLogin with HomeController 
            data: $scope.user
         }).then(function (response) {
            console.log("Result value is : " + parseInt(response));
            data = response.data;
            $scope.btntext = 'Login';
            if (data == 1) {
                window.location.href = '/Home/dashboard';
             }
            else {
            alert(data);
        }
        }, function (error) {

        alert("Failed Login");
        });

위의 스 니핏은 로그인 페이지에서 작동합니다.


답변