$http.получить.)…(успех-это не функция


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

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

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

TypeError: $http.получить.(..).успех-это не функция

какие идеи? Спасибо

3 83

3 ответа:

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

для версий до углового V. 1. 6, Вы должны использовать then метод. Элемент then() метод принимает два аргумента:success и error обратный вызов, который будет вызван с объектом ответа.

С помощью 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 - это отличный способ транспортировки сведения, и это легко использовать в пределах AngularJS

основное различие между 2 является то, что .then() вызов возвращает a promise (разрешен со значением, возвращенным из callback), а .success() более традиционный способ регистрации callbacks и не возвращает a promise.

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

Если вы пытаетесь использовать AngularJs 1.6.6 по состоянию на 21/10/2017 следующий параметр работает как .успех так и был исчерпан. Этот.затем метод () принимает два аргумента: ответ и обратный вызов ошибки, который будет вызван с объектом ответа.

 $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 работает для страницы входа в систему.