我正在关注http://www.youtube.com/watch?v=IRelx4-ISbs的教程,使用AngularJS $资源从Google财经获取股票指数的JSON数据,例如S& P 500。但是,当我将结果写入控制台时,我看不到数据。我在谷歌Chrome控制台中得到了这个:
但是,当我在Chrome的控制台中转到“网络”时,我会看到名称路径左侧列中的get。当我点击“信息时,我在右侧面板上看到五个选项卡。在预览和响应选项卡下,我看到了正确的数据。我只是不知道如何在我的Javascript中查看或检索它。
我试图将我的代码放到http://jsfiddle.net/curt00/ycYn7/,但Google Chrome的控制台正在给我“未捕获的错误:没有模块:Twitter”。 (有没有人知道如何解决这个错误?)这是我的jsfiddle的HTML代码:
<!doctype html>
<html ng-app="Twitter">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular-resource.min.js">
</script>
</head>
<body>
<div ng-controller="TwitterCtrl"></div>
</body>
</html>
以下是我的jsfiddle的Javascript代码:
angular.module('Twitter', ['ngResource']);
function TwitterCtrl($scope, $resource) {
var tickerSymbol = "INDEXSP:.INX";
var tempurl = 'https://finance.google.com/finance/info?client=ig&q=' + tickerSymbol.replace(":","%3A") + '&callback=?:action';
$scope.googleFinance = $resource(tempurl,
{action:'&test=', q:'test', callback:'JSON_CALLBACK'},
{get:{method:'JSONP'}});
$scope.indexResult = $scope.googleFinance.get();
console.log('indexResult: ',$scope.indexResult);
}
有人可以建议如何更改我的代码,以便我可以从响应中获取数据吗?
答案 0 :(得分:2)
至少有两件事情是不正确的:
您正在复制请求中的参数。 tempurl
不应包含任何参数(即https://finance.google.com/finance/info
)。如果要传递参数,请在操作(“获取”,“发布”,“删除”等)中执行此操作或设置默认参数。有关更多信息,请查看angular.js $resource documentation。
Google财经响应实际上是一个数组,因此您需要将isArray: true
添加到您的GET操作才能使其正常工作
jsFiddle :http://jsfiddle.net/8zVxH/1/
P.S。我不熟悉Google财经API,因此我不知道结果是否符合您的预期。我只是'修复'你的jsFiddle而不改变逻辑......