Javascript 通过3个json文件创建嵌套菜单
我试图从3个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
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
});
有关如何等待多个异步回调的更多信息,请参阅