angularjs service uncaught语法错误意外标识符

时间:2016-08-28 13:26:18

标签: angularjs angularjs-service

从Web服务返回我的json数据的Angularjs服务在return语句中创建错误未捕获语法错误意外标识符。

这是我的angularjs服务 -

        app.factory('GetProjectService', function ($http, $q) {
            return {
               getProject: function(str) {
               $http({
                    method: 'GET',
                    url: 'http://localhost:19342/api/Search/GetAllProjects',
                  headers: { 'Content-Type': 'application/json' }
                     }).then(function(response) {
                        if (typeof response.data === 'object') {
                            return response.data;
                        } else {
                            return $q.reject(response.data);
                        }
                    }, function(response) {
                        return $q.reject(response.data);
                    });
               }
        };

    });

2 个答案:

答案 0 :(得分:1)

$ q在您的代码中未正确使用。请参阅以下代码段 -

  app.factory('GetProjectService', function ($http, $q) {
        return {
           getProject: function(str) {
             var deferred = $q.defer();

             $http({
                  method: 'GET',
                  url: 'http://localhost:19342/api/Search/GetAllProjects',
                headers: { 'Content-Type': 'application/json' }
                   }).then(function(response) {
                      deferred.resolve(response.data);
                  }, function(response) {
                      deferred.reject(response.data);
                  });
             return deferred.promise;
           }
    };

});

但是当你是$ http时,没有必要使用$ q,因为$ http会返回promise obj。这是在服务中使用$ http的另一种方式 -

  app.factory('GetProjectService', function ($http, $q) {
        return {
           getProject: function(str) {

             return $http({
                  method: 'GET',
                  url: 'http://localhost:19342/api/Search/GetAllProjects',
                headers: { 'Content-Type': 'application/json' }
                   });

           }

    };

});

答案 1 :(得分:0)

getProject缺少return声明。

app.factory('GetProjectService', function ($http, $q) {
    return {
        getProject: function getProject(str) {
            //RETURN http promise 
            return $http({
                method: 'GET',
                url: 'http://localhost:19342/api/Search/GetAllProjects',
                headers: { 'Content-Type': 'application/json' }
            }).then(function onSuccess(response) {
                if (typeof response.data === 'object') {
                    return response.data;
                } else {
                    return $q.reject(response.data);
                }
            }, function onReject(response) {
                return $q.reject(response.data);
            });

        }
    };

});

在函数层次结构的每个级别都需要有return语句。工厂需要return语句,getProject函数需要return语句,onSuccessonReject函数需要returnthrow声明。