AngularJS $ http返回空数据,状态-1

时间:2018-01-26 03:33:49

标签: angularjs node.js express

我是Node.js和AngularJS的新手。我正在使用MEAN堆栈开发一个访问定义的webservices的网站。当我使用$http时,它总是返回空数据。这是我的片段:

vendor.service.js文件:

(function () {
'use strict';

angular
    .module('app')
    .factory('VendorService', Service);




function Service($http, $q) {
    var service = {};
    //Store
    service.GetCurrent = GetCurrent;//st_details
return service;

    function GetCurrent() {
        return $http('http://localhost:3000/api/vendors/st_details').then(handleSuccess, handleError);
    }
function handleSuccess(res) {
        alert('hi3');
        alert(res.data);
        return res.data;
    }

    function handleError(res) {
        alert('hi2');
        alert(JSON.stringify(res));
        return $q.reject(res.data);
    }
}

})();

回复是:

{
  "data": null,
  "status": -1,
  "config":
  {
    "method": "GET",
    "transformRequest": [null],
    "transformResponse": [null],
    "url": "http://localhost:3000/api/vendors/st_details",
    "headers":
    {
      "Accept": "application/json, text/plain, */*",
      "Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI1OWRlMjY5Y2UyMzY3NGMyMWQzNDNkNWYiLCJpYXQiOjE1MTY5MzU5NTUsImV4cCI6MTUxNjk3OTE1NX0.F9p9n9lMIgABKjv7CsAgzlxg7NtOzU6R1CDOsD6lBbI"
    }
  },
  "statusText": ""
}

我不知道在发送之前如何打印req json。此外,它在Boomerang中工作正常,但不在页面上。

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

在控制器内展开承诺而不是服务。只需返回服务中的http req。

(function () {
'use strict';

angular
    .module('app')
    .factory('VendorService', Service);

function Service($http, $q) {
    var service = {};
    //Store
    service.GetCurrent = GetCurrent;//st_details
return service;

    function GetCurrent() {
        return $http('http://localhost:3000/api/vendors/st_details')
    }

}

你的控制器应该是。

VendorService.GetCurrent().then(handleSuccess, handleError);

function handleSuccess(res) {
    alert('hi3');
    alert(res.data);
    return res.data;
}

function handleError(res) {
    alert('hi2');
    alert(JSON.stringify(res));
    return $q.reject(res.data);
}