Javascript 从meteor中的JSONP中提取数据
因此,我正在使用一家名为MarkitOnDemand的公司的API来获取股票数据 服务器端:Javascript 从meteor中的JSONP中提取数据,javascript,meteor,highcharts,Javascript,Meteor,Highcharts,因此,我正在使用一家名为MarkitOnDemand的公司的API来获取股票数据 服务器端: Meteor.methods({ 'getStockData' : function(tickerSymbol) { check(tickerSymbol, String); this.unblock(); url = "http://dev.markitondemand.com/MODApis/Api/v2/InteractiveChart/jsonp?parameters
Meteor.methods({
'getStockData' : function(tickerSymbol) {
check(tickerSymbol, String);
this.unblock();
url = "http://dev.markitondemand.com/MODApis/Api/v2/InteractiveChart/jsonp?parameters=%7B%22Normalized%22%3Afalse%2C%22NumberOfDays%22%3A365%2C%22DataPeriod%22%3A%22Day%22%2C%22Elements%22%3A%5B%7B%22Symbol%22%3A%22" + tickerSymbol + "%22%2C%22Type%22%3A%22price%22%2C%22Params%22%3A%5B%22c%22%5D%7D%5D%7D"
var response = HTTP.call( 'GET', url, {
params: {
"callback" : "lookup"
},
headers: {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
}
});
// console.log(response);
if(response.statusCode == 200) {
console.log('Success');
return(response.content)
}
}
});
客户端:
Template.LookupChartTemplate.rendered = function () {
stockData = Meteor.call("getStockData", stockname.Symbol, function(error, results){
console.log(results);
});
}
客户端控制台.log(结果)的结果如下:
lookup({"Labels":null,"Positions":[0,0.004,0.008,0.012,0.016,0.02,0.024,0.028,0.032,0.036,0.04,0.043,0.047,0.051,0.055,0.059,0.063,0.067,0.071,0.075,0.079,0.083,0.087,0.091,0.099,0.103,0.107,0.111,0.115,0.119,0.123,0.126,0.13,0.134,0.138,0.142,0.146,0.15,0.154,0.158,0.162,0.166,0.17,0.174,0.178,0.182,0.186,0.19,0.194,0.198,0.202,0.206,0.209,0.213,0.217,0.221,0.225,0.229,0.233,0.241,0.245,0.249,0.253,0.257,0.261,0.265,0.269,0.273,0.277,0.281,0.285,0.289,0.292,0.296,0.3,0.304,0.308,0.312,0.316,0.32,0.324,0.328,......
现在的问题是:
如何从回调结果中获取数据
预期最终结果:
我想从jsonp响应中获取所有键/值对,并将它们分配给各种变量(以便我可以将它们传递到highcharts以制作图表)。现在,您可以看到,您使用名为
查找(…数据…
的函数获得了jsonp
,您必须调用/创建此函数来提取数据:
var lbls, pos;
function lookup(data){
lbls = data.Labels;
pos = data.Positions;
}
现在,在highcharts中,您可以使用
lbls
和pos
varialbles。现在,您可以看到,您得到了名为lookup(…data…
)的函数的JSONP
,您必须调用/创建此函数来提取数据:
var lbls, pos;
function lookup(data){
lbls = data.Labels;
pos = data.Positions;
}
现在,在highcharts中,您可以使用
lbls
和pos
varialbles。JSONP是一种在浏览器中围绕同一来源策略工作的肮脏黑客。您没有使用浏览器,因此不需要它
将URL从/jsonp
更改为/json
,API将返回纯json
你可以用JSON解析它。解析JSONP是一种在浏览器中围绕同一源代码策略的肮脏的黑客行为。您没有使用浏览器,因此不需要它 将URL从
/jsonp
更改为/json
,API将返回纯json
你可以用JSON解析它。解析谢谢你的回复。那么,假设我将从服务器获得的整个jsonp对象(在本例中为命名响应)返回给客户端,那么如何在客户端访问名为lookup的函数呢?感谢您的回复。那么,假设我将从服务器获得的整个jsonp对象(在本例中为命名响应)返回给客户端,那么如何在客户端访问名为lookup的函数呢?谢谢。我决定暂时采用这个想法,同时我对回调有了更好的理解。谢谢,很好。我没想到不使用浏览器会出现这种情况。谢谢。我决定暂时采用这个想法,同时我对回调有了更好的理解。谢谢,很好。我没想到不使用浏览器会发生这样的事情。