【发布时间】:2013-05-21 00:43:32
【问题描述】:
我正在尝试从 yahoo 的 api 获取股票报价,并且我正在使用 angular 的 $http.jsonp 方法。目标是当结果返回时,让应用程序转到此路线:'/stocks/show_stock'。我试图以两种方式做到这一点,但都不起作用 1)我把声明:
window.location = '/stocks/show_stock'
在包装 JSONP 响应的回调函数中 2)我把声明:
$location.path '/stocks/show_stock'
在 HTTPpromise 回调中。 (见代码中的cmets)
这是我的代码(在 coffescript 中):
#THIS IS THE CALLBACK FUNCTION THAT I SEND WITH THE JSONP REQUEST
window.stock_quote_callback = (data)->
console.log data #THIS WORKS AND I CAN SEE THE DATA RETURNED FROM YAHOO
window.stock_quote_result = data.results
alert 'I am in the callback'
#THE STATEMENT BELOW DOES NOT WORK EVEN THOUGH I CAN SEE THE ALERT ABOVE
window.location = '/stocks/show_stock'
angular.module('Services').service 'StockSupplier', ($http)->
get_stock = (symbol)->
q = 'select * from yahoo.finance.quotes
where symbol in ("'+symbol+'")
&format=json&
diagnostics=true&
env=http://datatables.org/alltables.env&
callback=stock_quote_callback'
url = 'http://query.yahooapis.com/v1/public/yql?q='+q
$http.jsonp(url).then (data)->
#THE CODE BELOW NEVER EXECUTES EVEN THOUGH RESULT IS RETURNED
alert 'This should pop up when result returns'
$location.path'/stocks/show_stock'
{
get_stock: (symbol)-> get_stock(symbol)
}
提前谢谢你。
【问题讨论】:
-
你没有在url中添加callback=JSON_CALLBACK,url应该是query.yahooapis.com/v1/public/…
-
它就在那里。 'q' 字符串的第 6 行。正如我所提到的,这不是问题,我确实让回调触发,但该回调中的 window.location = '/stocks/show_stock' 不起作用。这就是为什么我尝试使用 httpPromise 的 'then' 功能但也没有用
-
谢谢 Ajay,我知道你的意思了。
标签: angularjs coffeescript jsonp