Загрузка внешнего файла json в highchart

#javascript #jquery #json #highcharts

#javascript #jquery #json #highcharts

Вопрос:

При загрузке внешнего файла JSON в HighCharts он ничего не показывает в браузере. У меня есть следующие данные JSON. Я включил highchart.js и jquery.js в head моем HTML-коде, но я все еще не могу получить гистограмму в своем браузере. При проверке консоли ошибка не отображается в консоли.

 var json = [{
    "key": "Apples",
    "value": "4"
}, {
    "key": "Pears",
    "value": "7"
}, {
    "key": "Bananas",
    "value": "9"
}];

var processed_json = new Array();
$.map(json, function(obj, i) {
    processed_json.push([obj.key, parseInt(obj.value)]);
});

$('#container').highcharts({
    chart: {
        type: 'column'
    },
    xAxis: {
        type: "category"
    },
    series: [{
        data: processed_json
    }]
});
  

Комментарии:

1. Попробуйте использовать статические данные вместо файла json и проверьте, работает ли это, может быть проблема с данными.

2. не работает, когда данные json используются внутри <script>

Ответ №1:

Это потому, что порядок выполнения отличается от ожидаемого. т.е. Выполнение раздела загрузки JSON происходит до его инициализации.

Вы можете поместить код раздела загрузки JSON в одну функцию и вызвать эту функцию после завершения инициализации (.success или .done в событии элемента HTML).

У меня была одна AJax-функция, поэтому я вызвал эту функцию загрузки JSON при успешном выполнении этого AJAX-вызова.

Код:

 var json = [{
    "key": "Apples",
    "value": "4"
}, {
    "key": "Pears",
    "value": "7"
}, {
    "key": "Bananas",
    "value": "9"
}];

var processed_json = new Array();
$.map(json, function(obj, i) {
    processed_json.push([obj.key, parseInt(obj.value)]);
});
if (processed_json.length != 0) {
   loadJson();
}

function loadJson() {
    $('#container').highcharts({
        chart: {
            type: 'column'
        },
        xAxis: {
            type: "category"
        },
        series: [{
            data: processed_json
        }]
    });
}
  

Комментарии:

1. не понимаю, что вы имеете в виду? Объясните с помощью кода #Санджай Кумар N S

2. Убедитесь, что элемент с идентификатором = container присутствует, а переменная JSON processed_json инициализирована должным образом.

3. да, идентификатор = контейнер присутствует в <div> . Можете ли вы предоставить выходные данные с помощью JSFiddle

4. Здесь я смог обнаружить, что переменная processed_json не находится в допустимом формате JSON, который вы ожидаете. Когда я попробовал использовать переменную json, она сработала. У меня нет вашего полного кода, даже тогда я пытался использовать образец. Демонстрация: jsfiddle.net/sanjaykumarns/VtVFB/612