我可以使用帶JSONP的Angular JS $資源從Google Finance獲取股票價格。這是顯示在這裏:http://jsfiddle.net/8zVxH/1/
我需要谷歌沒有提供,但雅虎的歷史價格。我修改了上面的jsfiddle這個:http://jsfiddle.net/curt00/BqtzB/
下面的代碼:
angular.module('app', ['ngResource']);
function AppCtrl($scope, $resource) {
var yqlURL="http://query.yahooapis.com/v1/public/yql?q=";
var dataFormat="&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";
var symbol = 'GOOG';
var startDate = '2012-12-05';
var endDate = '2012-12-06';
var historical_query = yqlURL+"select%20*%20from%20yahoo.finance.historicaldata%20where%20symbol%20%3D%20%22"+ symbol +"%22%20and%20startDate%20%3D%20%22"+ startDate +"%22%20and%20endDate%20%3D%20%22"+ endDate +"%22"+ dataFormat;
$scope.yahooFinance = $resource(historical_query,
{callback:'JSON_CALLBACK'},
{get: {method:'JSONP', isArray: false}});
$scope.indexResult = $scope.yahooFinance.get();
}
它在瀏覽器控制檯產生錯誤消息:
GET http://query.yahooapis.com/v1/public/yql?q=select%20 *%20from%20yahoo.finance。 historicaldata%20where%20symbol%20%3D%20%22GOOG%22%20於是%20startDate%20%3D%20%222012-12-05%22%20於是%20endDate%20%3D%20%222012-12-06% 22 & format = json & env = store%3A%2F%2Fdatatables.org%2Falltableswithkeys?callback = angular.callbacks._0 400(Bad Req uest)
有沒有人知道如何讓這個工作?
我知道JQuery的getJSON可以用於這個Yahoo查詢,但據說AngularJS的$資源更快,更高效。
感謝您的建議。這很有幫助。但是,它返回NULL。這通過在瀏覽器中輸入url來確認。此外,以'ichart.yahoo.com'開頭的網址會爲每個歷史日期下載價格,而不僅僅是從和到之間的日期。我不得不做一些改變,可以在這裏看到:http://jsfiddle.net/curt00/XY89Y/1/。你的「getHistoricalData:function」和「$ log.info」導致錯誤。那些JavaScript命令? – Curt
這是一個自定義(角度)服務的一部分 – asgoth
我在你的幫助下取得了進步。現在,我試圖在返回到我稱爲getHistoricalData函數的位置後訪問histData對象中的數據。請參閱我發佈的代碼在http://stackoverflow.com/questions/13979324/cannot-access-elements-in-object-returned-by-javascript-function-in-angularjs – Curt