无法阅读来自Google财经的AngularJS $资源JSONP的回复

时间:2012-12-06 16:12:06

标签: get jsonp angularjs finance

我正在关注http://www.youtube.com/watch?v=IRelx4-ISbs的教程,使用AngularJS $资源从Google财经获取股票指数的JSON数据,例如S& P 500。但是,当我将结果写入控制台时,我看不到数据。我在谷歌Chrome控制台中得到了这个:

  • ë
  • __ proto:3
  • $删除
  • $ GET
  • $查询
  • $删除
  • $保存
  • 构造
  • __原

但是,当我在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);
}

有人可以建议如何更改我的代码,以便我可以从响应中获取数据吗?

1 个答案:

答案 0 :(得分:2)

至少有两件事情是不正确的:

  1. 您正在复制请求中的参数。 tempurl 不应包含任何参数(即https://finance.google.com/finance/info)。如果要传递参数,请在操作(“获取”,“发布”,“删除”等)中执行此操作或设置默认参数。有关更多信息,请查看angular.js $resource documentation

  2. Google财经响应实际上是一个数组,因此您需要将isArray: true添加到您的GET操作才能使其正常工作

  3. jsFiddle http://jsfiddle.net/8zVxH/1/

    P.S。我不熟悉Google财经API,因此我不知道结果是否符合您的预期。我只是'修复'你的jsFiddle而不改变逻辑......