我有一个Angular服务我正在尝试设置从服务JSON文件的节点服务器检索数据到应用程序。我检查了节点服务器URL,他们都输出了JSON,但是由于HTTP头,Angular似乎无法获取它们。从一些谷歌搜索看起来这是一个常见的问题,我只是不确定如何,甚至是否有解决方法?
eventsApp.factory('eventData', function($http, $log) {
return {
getEvent: function(successcb) {
$http({method: 'GET', url: 'http://localhost:8000/data/event/1'}).
success(function(data, status, headers, config){
successcb(data);
}).
catch(function(data, status, headers, config){
$log.warn(data, status, headers, config);
})
}
}
});
在控制台中,我从catch中收到以下警告:
Object {data:null,status:0,headers:headersGetter /<(),config:Object,statusText:“”} undefined undefined undefined
答案 0 :(得分:1)
// Simple GET request example:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
响应对象具有以下属性:
- data -
{string|Object}
- 使用。转换的响应主体 变换函数。- status -
{number}
- HTTP的状态代码 响应。- 标题 -
{function([headerName])}
- 标题获取功能。- config -
{Object}
- 用于生成的配置对象 请求。- statusText -
{string}
- 响应的HTTP状态文本。
所以你应该能够使用以下方式获得感兴趣的标题:
response.headers('header-name')
根据你的回复日志:result.data
为空。因此,您应该检查Network
的{{1}}标签,并检查服务器的aqtual http响应。
Chrome Dev Tools
0表示可能存在CORS问题。因此,如果您的角度应用程序托管在您尝试发送http请求的服务器上的其他主机或端口(在您的情况下为localhost:8000),那么您应该配置 SERVER 以允许CORS请求。