Подтвердить что ты не робот

$ http.get(...). Успех не является функцией

У меня есть этот код:

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

В моей локальной среде работает нормально, но на сервере вернет эту ошибку:

TypeError: $http.get(...). Успех не является функцией

Любые идеи? Благодаря

4b9b3361

Ответ 1

Синтаксис .success был правильным до Angular v1.4.3.

Для версий до Angular v.1.6 вы должны использовать метод then. Метод then() принимает два аргумента: a success и обратный вызов error, который будет вызываться с объектом ответа.

Используя метод then(), присоедините функцию callback к возвращенному promise.

Что-то вроде этого:

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

   },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() возвращает a promise (разрешен со значением, возвращаемым с callback), а .success() является более традиционным способом регистрации callbacks и не возвращается a promise.

Ответ 2

Это может быть излишним, но выше всего проголосовавший ответ говорит .then(function (success), и это не сработало для меня, как из Angular version 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.');
});

Ответ 3

Если вы пытаетесь использовать AngularJs 1.6.6 от 21/10/2017, следующий параметр работает как .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");
        });

Вышеупомянутый snipit работает для страницы входа.