Javascript 通过3个json文件创建嵌套菜单

Javascript 通过3个json文件创建嵌套菜单,javascript,jquery,json,Javascript,Jquery,Json,我试图从3个json文件中创建一个嵌套菜单,但在第一步中,我卡住了,它没有返回任何内容: var json = {}; $.getJSON("/api/category.json", function(data){ json.category = data; }); $.getJSON("/api/subcat.json", function(data){ json.subcat = data; }); $.getJSON("/api/subsubcat.json", fun

我试图从3个
json
文件中创建一个嵌套菜单,但在第一步中,我卡住了,它没有返回任何内容:

var json = {};
$.getJSON("/api/category.json", function(data){
    json.category = data;
});

$.getJSON("/api/subcat.json", function(data){
    json.subcat = data;
});

$.getJSON("/api/subsubcat.json", function(data){
    json.subsubcat = data;
});

$.each(json, function(i,v) {
    console.log(json[i]); // it return nothing
});
但当我尝试
console.log(json)
时,它返回对象,但即使当我得到
console.log(json.category)
时,它也不返回任何内容,在控制台日志中没有错误

如果我解决了这个问题,我想在一个循环中创建一个嵌套菜单,其中包含这三个
json
文件,如下所示:

var obj='';
$.each(json.category,function(i,v){
obj+='
    • ”; $.each(json.subcat,函数(i,v){ if(json.subcat[“cat_id”]==json.category[“id”]){ obj+='
    • ”; } }); obj+='
    '; //还有亚亚亚群猫 $('.simulate cat').append($(obj)); });
    问题在于您没有等待请求完成。因此,尚未填充
    json
    属性

    应该是这样的

    $.when($.getJSON("/api/category.json"), $.getJSON("/api/subcat.json") , $.getJSON("/api/subsubcat.json")).done(function( a1, a2, a3 ) {
      json.category = a1[0];
      json.subcat = a2[0];
      json.subsubcat = a3[0];
      // create menu here
    });
    
    有关如何等待多个异步回调的更多信息,请参阅