工厂不会返回http数据响应

时间:2016-02-04 11:32:47

标签: angularjs angularjs-service

我试图使用下面的代码获取http post数据响应(它正在工作)。

app.factory('LoginService', function($http, $location) {

return {
    existUser: function(loginObj) 
    {

        $http({

            method: 'POST',
            url: server + '/login',
            headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'},
            data: 'json=' + JSON.stringify(loginObj)

        }).then(function successCallback(response) {

                return response.data;

            }, function errorCallback(response) {
                console.log(response);
                console.log("erro!");

            }); 

    }
}

});

在我的控制器里面,我有:

LoginService.existUser(loginObj).then(function (data){
    console.log(data);
});

我得到了错误:

Cannot read property 'then' of undefined

有什么问题?

1 个答案:

答案 0 :(得分:1)

您的return response.data;会返回then函数的结果,而不是existUser!修改您的代码如下:

app.factory('LoginService', function($http, $location) {

   return {
     existUser: function(loginObj) 
       {
          return $http({
            method: 'POST',
            url: server + '/login',
            headers: {'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'},
            data: 'json=' + JSON.stringify(loginObj)
          })
       }
    }

});

在这种情况下,existUser方法返回promise对象,该对象具有.then方法