Estoy armando un menu con submenu de boostrap, con dos funciones
-La Funcion 1 trae todos las opciones sin los submenus (ya lo muestro sin problemas), dentro de la funcion 1 envio ciertos datos a la funcion 2 la cual dependiendo de esos datos hace una cosulta ajax y crea las opciones con sus submenus.
-El problema es que cuando en la funcion 1 intento concatenar el resultado de la funcion 2 con otras variables de la funcion 1 si me muestra los intentos correcto pero me devuelve UNDEFINE, ya realize un console.log en la funcion 2 y si genera los elementos espero puedas ayudarme saludos.
Pongo codigo de ambas funciones
Código:
ESTA FUNCION CREA EL MENU function creamenu(){ var usuarioEMnu = $("#idUsuarioMenu").val(); var conadmin = "<ul class='sidebar-menu' data-widget='tree'>" +"<li><a href='panel'><i class='fa fa-home'></i> <span>Inicio</span></a></li>"; var vauno = "<li class='header'>Areas</li>"; conteniodconsu = ""; //https://www.youtube.com/watch?v=0ELGh2mXas4 /* obtenemos todos los valores de la base de datos sin filtro por ser administrador */ $.ajax({ url: 'home/menuadminconsu', type: 'POST', dataType: 'json', contentType: false, processData: false, cache: false, }).done(function(res) { res.data.forEach(function(persona, index) { !!!!! AQUI ES DONDE INVOCO LA FUNCION Y DONDE ME TENDRIA QUE REGRESAR LA VARIABLE CON TODOS LOS ELEMENTOS CREADOS concen += " "+ creamenusub(persona.dato,persona.icono,persona.nombre); }); /* creamos variable con contenido de admin */ conadmindi ="<li class='header'>Administración</li>" +"<li class='treeview'>" +"<a style='cursor:pointer'><i class='fa fa-search'></i> <span>Catalogos</span><span class='pull-right-container'><i class='fa fa-angle-left pull-right'></i></span></a>" +"<ul class='treeview-menu'>" +"<li><a href='catAdmin/ubicacion'><i class='fa fa-circle-o'></i>Ubicaciones</a></li>" +"<li><a href='catAdmin/areas'><i class='fa fa-circle-o'></i>Áreas</a></li>" +"</ul>" +"</li>" +"<li><a href='soporte/admin'><i class='fa fa-cogs'></i> <span>Soporte</span></a></li>" +"<li><a href='portada'><i class='fa fa-slideshare'></i> <span>Portada</span></a></li>" +"<li><a href='menu'><i class='fa fa-bars'></i> <span>Menu</span></a></li>" +"<li><a href='usuarios'><i class='fa fa-address-book-o'></i> <span>Usuarios</span></a></li>" +"<li><a href='buzon'><i class='fa fa-newspaper-o'></i> <span>Buzón</span></a></li>" +"<li class='treeview'>" +"<a style='cursor:pointer'><i class='fa fa-search'></i> <span>Logs</span><span class='pull-right-container'><i class='fa fa-angle-left pull-right'></i></span></a>" +"<ul class='treeview-menu'>" +"<li><a href='log/acceso'>Acceso</a></li>" +"<li><a href='log/actividades'>Actividades</a></li>" +"</ul>" +"</li>" +"</ul>"; var final = conadmin +" "+ vauno +" "+ conteniodconsu +" "+ conadmindi; //alert(final); //console.log(final); $("#menugeneral").html(final); }).fail(function(err) { toastr.error('Hubo un error en la petición', '¡Upss!'); }) } /* funcion para ver si la seccion del menu cuenta con submodulos */ function creamenusub(valor,icono,nombre){ /* enviamos el valor por el data */ data = new FormData(), data.append('padre', valor); $.ajax({ url: 'home/menuadminconsusub', type: 'POST', dataType: 'json', contentType: false, processData: false, cache: false, data: data }).done(function(res) { contenido = ""; if(res.data == false){ /* en este caso no tenemos submenu y creamos la variable normal*/ contenido += "<li><a href='"+valor+"'><i class='fa "+icono+"'></i> "+nombre+"</a></li> "; conteniodconsu = contenido; } else{ var medio = ''; var inicion= ''; /* en eset caso creamos el menu con submenus */ inicion += "<li class='treeview'><a style='cursor:pointer'><i class='fa "+icono+"'></i> <span>"+nombre+"</span><span class='pull-right-container'><i class='fa fa-angle-left pull-right'></i></span></a><ul class='treeview-menu'>"; /* aqui recorremos el resultado del sub para traer la opciones */ res.data.forEach(function(persona, index) { medio += "<li><a href='"+valor+"/"+persona.dato+"'><i class='fa "+persona.icono+"'></i>"+persona.nombre+"</a></li>"; }); var fin ="</ul></li>"; contenido += inicion + medio + fin; conteniodconsu = contenido; } console.log(conteniodconsu); return conteniodconsu; }).fail(function(err) { toastr.error('Hubo un error en la petición', '¡Upss!'); }) }