Я бы посоветовал что-то вроде следующего.
$(function(){
var points = [];
$.getJSON("http://gsx2json.com/api?id=1vc7wCjNXK39HMEYDkOJRMhQGPJpxMu4MJgTsydyLats&columns=false", function(d){
$.each(d.rows, function(i, r){
points.push({
x: new Date(r.timestamp),
y: r.latitude
});
});
}).fail(function(xhr, status, error) {
console.log("Ajax Error", status, error);
});
var chart = new CanvasJS.Chart("chartContainer", {
type: "line",
data: [{
dataPoints: points
}]
});
chart.render();
});
Это может вызвать проблемы из-за CORS.
Из-за ограничений безопасности браузера большинство запросов "Ajax" подчиняются той же политике происхождения ;запрос не может успешно получить данные из другого домена, субдомена, порта или протокола.
Если это так, можно попробовать с помощью $.ajax()
и установить dataType
на jsonp
.Можно также перейти к fetch()
альтернатива.
Глядя на возвращенные данные, можно было бы проще использовать rows
, поскольку вам нужны соответствующие timestamp
и latitude
.Колонны усложняют это;вам нужно будет выполнить итерацию массива columns.timestamp
одновременно с массивом columns.latitude
.Следовательно, часть &columns=false
URL-адреса помогает сократить объем данных, которые необходимо передать обратно.
Надеюсь, это поможет.