我有一个函数,我正在调用一个返回 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'));
});
当我运行调用它的网页/操作时,我会按照给定的顺序得到以下结果:
outside getjson: null
in click event: null
inside getjson: [object Object]
我尝试了一些其他配置(.getJSON() 的 .complete,直接从 $.getJSON() 返回一个值)以尝试将回调中的“数据”回显到封闭范围的 blob 变量,但到目前为止,该 blob 似乎仅在 getJSON 回调中具有价值。
话虽如此,我也知道 JavaScript 是一种词法范围的语言,所以它可能是所有匿名函数链正在执行的问题。
问题:我可以看到我的 blob 在 $.getJSON 中正确显示。现在,我该如何取出我的斑点?