我想从http://chartapi.finance.yahoo.com/instrument/1.1/goog/chartdata;type=close;range=1d/json/?callback=?
看起来像http://www.highcharts.com/samples/data/jsonp.php?filename=goog-c.json&callback=?
请参阅:http://jsfiddle.net/gMs6n/(已更新: http://jsfiddle.net/gMs6n/2/)(查看控制台以查看数据日志) 使用Highcharts示例的工作版本:http://jsfiddle.net/gMs6n/1/
$(function () {
// ajax in data
$.ajax({
type: 'GET',
dataType: 'jsonp',
cache: true, jsonp: false, jsonpCallback: 'graph',
url: 'http://chartapi.finance.yahoo.com/instrument/1.1/goog/chartdata;type=close;range=1d/json/?callback=graph', // http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=graph
processData: false
}).success(function(data) {
// manipulate the data
console.log(data);
//JSON.parse(data);
// create a new data object
$.each(data.series, function (i, val) {
for (var key in data.series[i]) {
//console.log(key);
console.log(data.series[i][key]); // how to pair up the timestamp/close in a new data object?
}
});
// Create the chart
/*
$('#container').highcharts('StockChart', {
series: [{
data: data,
tooltip: {
valueDecimals: 2
}
}]
});
*/
});
});
我已尝试JSON.parse(data);
和$.parseJSON(data);
,但我收到了错误消息。我一定是做错了。
如何在ajax之后操纵它,以便最终得到"数据" Highcharts可以使用?我正在使用$.each
迭代数据以形成新的数据集。 如何在新数据对象中配对时间戳/关闭?
答案 0 :(得分:0)
我希望这是你所寻找的,或者至少让你更接近目标:
}).success(function(data) {
var series = data.series.map(function(data){ return [data.Timestamp, data.close] ; });
// manipulate the data
console.log(series[0]);
这将产生一个具有以下格式的单个数组:
[1389018600, 1114.25]
这是更新的小提琴:
答案 1 :(得分:0)
工作:http://jsfiddle.net/gMs6n/5/
$(function () {
// ajax in data
$.ajax({
type: 'GET',
dataType: 'jsonp',
cache: true, jsonp: false, jsonpCallback: 'graph',
url: 'http://chartapi.finance.yahoo.com/instrument/1.1/goog/chartdata;type=close;range=1d/json/?callback=graph', // http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=graph
processData: false
}).success(function(data) {
// manipulate the data
//console.log(data);
//JSON.parse(data);
var chartData = [];
$.each(data.series, function (i, val) {
for (var key in data.series[i]) {
//console.log(key);
//console.log(data.series[i][key]);
}
var chartTime = data.series[i].Timestamp;
var chartClose = data.series[i].close;
//console.log(data.series[i]);
//console.log(chartTime);
chartData.push([chartTime, chartClose]);
});
console.log(chartData);
// Create the chart
$('#container').highcharts('StockChart', {
series: [{
data: chartData,
tooltip: {
valueDecimals: 2
}
}]
});
});
});