angularjs – 返回JSONP时不执行HTTPpromise
发布时间:2020-12-17 18:07:28 所属栏目:安全 来源:网络整理
导读:我试图从雅虎的api获得股票报价,我正在使用angular的$http.jsonp方法.目标是当结果返回时,让应用程序转到这条路线:’/ stocks / show_stock’.我试图以两种方式做到这一点,但都不起作用 1)我发表声明: window.location = '/stocks/show_stock' 在包装JSONP
我试图从雅虎的api获得股票报价,我正在使用angular的$http.jsonp方法.目标是当结果返回时,让应用程序转到这条路线:’/ stocks / show_stock’.我试图以两种方式做到这一点,但都不起作用
1)我发表声明: window.location = '/stocks/show_stock' 在包装JSONP响应的回调函数中 $location.path '/stocks/show_stock' 在HTTPpromise回调中. (参见代码中的注释) 这是我的代码(在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) } 先感谢您. 解决方法
我不写coffeescript,所以我把它翻译成了javascript.你忘记注入$location服务,除了我刚刚将callback = stock_quote_callback替换为callback = JSON_CALLBACK并创建了一个运行得很好的plunker:
http://run.plnkr.co/hCAdohIJIr9Odn3m/(来源:
http://plnkr.co/edit/a7C6k0QVoXnaTyImSUkb?p=preview).
angular.module('Services').service('StockSupplier',function($http,$location) { var get_stock; get_stock = function(symbol) { var q,url; q = 'select * from yahoo.finance.quotes where symbol in ("' + symbol + '")&'+ 'format=json&'+ 'diagnostics=true&'+ 'env=http://datatables.org/alltables.env&'+ 'callback=JSON_CALLBACK '; url = 'http://query.yahooapis.com/v1/public/yql?q=' + q; return $http.jsonp(url).then(function(data) { alert('This should pop up when result returns'); $location.path( '/stocks/show_stock' ); }); }; return { get_stock: function(symbol) { return get_stock(symbol); } }; }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |