2

私はJSの初心者で、非常に単純なことをしようとしています。

「data.json」という名前の 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,

dataすでに JSON を変数にロードしていると思いましたか? 助言がありますか?

4

1 に答える 1

3

dataに渡すコールバック内でのみ定義されますgetJSON。あなたがこれからやろうとしていることは何でも、その機能の中で行われなければなりません。

したがって、の代わりに(またはそれに加えて)、getJSONコールバックでその場で呼び出しconsole.log(data)を行うhandsontable(または呼び出しを行う関数を呼び出す)必要があります。handsontable

また、getJSONは非同期です。つまりdata、コールバック内でグローバル変数に割り当てるなどの操作を行ったとしても、呼び出し後に次のコード行に到達したときに、その変数にはまだその値がない可能性がありgetJSONます。リクエストが発行されるだけです。「ねえ、このJSONオブジェクトを取得し、それが終了したら、この関数を呼び出します。その間、ビジネスを続けます。ありがとうございます。」

于 2013-02-19T23:01:39.090 に答える