バックエンド アクションの内容を含む JSON blob を返す MVC コントローラーを呼び出す関数があります。この JSON BLOB は、エンド ユーザーに表示されるテーブルに入力するために使用されています。
私の関数は現在、次のようになっています。
function getJsonFromController(path) {
var blob = null;
$.getJSON(path, function (data) {
blob = data;
console.log('inside getjson : ' + blob);
});
console.log('outside getjson : ' + blob);
return blob;
}
...そして、次のような呼び出しアクション:
$('#action-button').click(new function () {
blob = getJsonFromController('A/B?pageId=1');
console.log('in click event: ' + blob);
$.tmpl($template, blob).appendTo($('#table-body'));
});
これを呼び出す Web ページ/アクションを実行すると、指定された順序で次の結果が得られます。
outside getjson: null
in click event: null
inside getjson: [object Object]
他の構成 (.getJSON() の .complete、$.getJSON() から値を直接返す) を試みて、コールバックからの「データ」を外側のスコープの blob 変数にエコーしようとしましたが、これまでのところ、ブロブは getJSON コールバック内でのみ値を持つように見えます。
そうは言っても、JavaScript はレキシカル スコープの言語であることも認識しているため、すべての匿名関数チェーンが実行される可能性があります。
質問: 私の blob が $.getJSON 内に正しく表示されていることがわかります。では、ブロブを取り出すにはどうすればよいでしょうか。