Загрузка файла JSON с помощью jQuery.помощью метода getjson


Я новичок в JS и пытаюсь сделать что-то очень простое.

У меня есть файл JSON с именем " data.json " и я хочу загрузить его, поэтому я делаю это:

$.getJSON("data.json",function(data){
    console.log(data);
});

И затем я передаю этот загруженный JSON функции в библиотеке, которая делает это:

$("#example1").handsontable({
    data:data,     //<--- error here
    minRows: 2,
    minCols: 3,
    minSpareRows: 1,
    currentRowClassName: 'currentRow',
    currentColClassName: 'currentCol',
    autoWrapRow: true,
    colHeaders: true
});

$("#example1").handsontable('selectCell', 3, 3);

Огненный Жук говорит

ReferenceError: data is not defined
[Break On This Error]   

data:data,

Я думал, что уже загрузил JSON в переменную data? Есть предложения?

1 2

1 ответ:

data определяется только внутри обратного вызова, который вы передаете в getJSON. Все, что вы собираетесь делать с этим, должно быть сделано в рамках этой функции.

Поэтому вместо (или в дополнение к) console.log(data), вам нужно выполнить вызов handsontable (или вызвать функцию, которая выполняет вызов handsontable) прямо там, в обратном вызове getJSON.

Также, getJSON является асинхронным, что означает, что даже если вы сделаете что-то вроде назначения data глобальной переменной внутри обратного вызова, эта переменная, вероятно, не будет иметь этого значение еще при переходе к следующей строке кода после вызова getJSON. Все, что вы сделали, это выдали запрос: "Эй, пойдите, возьмите этот объект JSON, и когда вы закончите это делать, вызовите эту функцию. А пока я собираюсь заняться своими делами. Спасибо!"