使用AngularJS服务未获取数据

Using AngularJS service not getting the data

本文关键字:获取 数据 服务 AngularJS 使用      更新时间:2023-09-26

如果我访问链接http://localhost/cgi-bin/superCategory.pl?action=GET我会得到这个数据:

[{"name":"Baby Care","id":"2","image":"/images/categories/baby-care.png"},{"name":" Bread, Bakery & Dairy Products","id":"5","image":"/images/categories/dairy-products.png"},{"name":"Beverages","id":"6","image":"/images/categories/beverages.png"},{"name":"Others","id":"9","image":"/images/categories/others.png"}]

但当我尝试使用AngularJS服务和控制器获取相同的数据时,我没有获得数据。这是我的控制器和服务代码。

sampleApp.factory('SuperCategoryService', ['$http', function ($http){
  var req = {
    method: 'POST',
    url: 'http://localhost/cgi-bin/superCategory.pl',
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    data: { action: 'GET' }
};  
  return {
        GetSuperCategories: function () {
            return $http(req).then(
                function(response) 
                {
                    if (typeof response === 'object') 
                    {
                        return response;
                    } 
                    else 
                    {
                        alert ('wrong');
                    }
                },
                function(response) {
                    alert ('again worng');
                    // something went wrong
                    //return $q.reject(response.data);
                });
            }
        };
}]);
sampleApp.controller('SuperCategoryController', function ($scope,SuperCategoryService) {
    $scope.SuperCategories = [];
    $scope.GetSuperCategories = function() {
        SuperCategoryService.GetSuperCategories().then(
        function(d) {
            alert (d);
            if (d !== undefined) {
                alert ('in');
                console.log(d);
                $scope.SuperCategories = d;
            }
            else  {
                alert ('undefined data');
            }
        },
        function(response) {
            alert ('error worng');
            // something went wrong
            //return $q.reject(response.data);
        });
    };
    $scope.GetSuperCategories();
});

尽管代码已到达警报('in'),但没有任何内容被分配给变量$scope.SuperCategories;

有人能帮我做作业做错了什么吗。

您的服务函数正在使用.then执行$http,这只是使用链承诺来解决问题。您应该从您服务的对象中获得显式数据。将返回response.data而不是response

   GetSuperCategories: function () {
        return $http(req).then(
            function(response) 
            {
                var data = response.data;
                if (typeof data === 'object') 
                {
                    return data ;
                } 
                else 
                {
                    alert ('wrong');
                }
            },
            function(response) {
                alert ('again worng');
                // something went wrong
                //return $q.reject(response.data);
            });
        }
    };