$http не работает. Ошибки не возвращаются в консоль

Я делаю мобильное приложение, и у меня есть контроллер, который обрабатывает вход пользователя. Он делает http-вызов (в настоящее время на локальный хост), чтобы проверить, действителен ли пользователь. По какой-то причине он не запускает вызов $http, и консоль ничего не говорит об этом. Я новичок в AngularJS и, вероятно, сделал ошибку новичка в своем коде. Я использую AngularJS с Ionic Framework.

Это мой LoginController:

.controller('LoginCtrl', ['$scope', '$ionicPopup', 'User', '$window', '$http', '$templateCache', function($scope, $ionicPopup, User, $window, $http, $templateCache){
    $scope.authUser = function(){
        console.log('authUser initialized');
        var email = document.getElementById('User_email');
        var password = document.getElementById('User_password');
        console.log('email=' + email.value);
        console.log('password=' + password.value);

        console.log('logging in...');
        if(email.value == '' || password.value == ''){
            var alertPopup = $ionicPopup.alert({
                title: 'Failed to login',
                template: 'Both fields need to be filled.'
            });
            alertPopup.then(function(res){
                console.log('Both fields need to be filled.');
            });
        } else {
            console.log('Contacting API server...');
            $scope.$apply(function(){
                $http({
                    method: 'POST',
                    url: 'http://api.tb.local/api.php',
                    data: { 'action': 'user/auth', 'email': email.value, 'password': password.value },
                    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                    cache: $templateCache
                }).
                success(function(response){
                    console.log('Response success');
                    console.log(response);
                    if(response.valid){
                        console.log('Login success. Redirecting to welcome page...');
                        $window.location.href = '#/welcome';
                    } else {
                        var alertPopup = $ionicPopup.alert({
                            title: 'Failed to login',
                            template: 'Wrong credentials. Please try again.'
                        });
                        alertPopup.then(function(res){
                            console.log('Wrong credentials. Please try again.');
                        });
                    }
                }).
                error(function(response){
                    var requestFailDialog = $ionicPopup({
                        title: 'Internal Error',
                        template: 'The server encountered an unknown error.'
                    });
                    requestFailDialog.then(function(res){
                        console.log('Internal Error: ' + response);
                    });
                });
            });
        }
    }
}])

Последнее, что я получаю в своей консоли, это Contacting API server....

Я протестировал свой API вручную, и он возвращает json { "valid": true }, как и должно быть.


person Karl Viiburg    schedule 23.09.2014    source источник
comment
Почему у вас есть весь вызов $http внутри $scope.$apply({}) ? Попробуйте удалить это.   -  person Tom Erik Støwer    schedule 23.09.2014
comment
@TomErikStøwer Я взял $scope.$apply({}) из этого вопроса: stackoverflow.com/questions/16299362/, поскольку я думал, что моя проблема из-за этого. Но с ним или без него он все равно не работает.   -  person Karl Viiburg    schedule 23.09.2014
comment
в консоли печатается «Успех ответа»?   -  person Nitish Kumar    schedule 23.09.2014
comment
@NitishKumar Нет. Как я уже сказал в своем вопросе, последнее, что я получаю в своей консоли, — это контакт с сервером API, который находится прямо перед вызовом $http. Весь $http не срабатывает.   -  person Karl Viiburg    schedule 23.09.2014
comment
удали кеш с $http и попробуй   -  person Nitish Kumar    schedule 23.09.2014
comment
@NitishKumar на удивление начал работать, когда я удалил из него кеш. Спасибо. Но как кеш мог помешать ему работать? Также не могли бы вы опубликовать это как ответ, чтобы я мог отметить его :)   -  person Karl Viiburg    schedule 23.09.2014
comment
cache — это логическая переменная конфигурации. У вас там было логическое значение?   -  person Tom Erik Støwer    schedule 23.09.2014


Ответы (1)


Попробуйте удалить cache: $templateCache из запроса $http.

person Nitish Kumar    schedule 23.09.2014