Problem with two app.request

I have to make two requests. With the first one I get the data “nom_largo” and “cod_alfabeta”.
With this code I make the second request.

The first request works perfect, I receive the data and generate a virtual list. (view image)

The second request is made but does not show the results.
What I do is obtain the data of the branches where the product is located. And then with a FOR, remove the branches that have no stock, and save everything in a variable.

And finally insert the variable, which contains a list, into the virtual list of the first request.
I want to show the branches with and accordion-list. So to show this I use accordionBeforeOpen but it shows me the accordion-list when i close the accordion, instead on open.

CODE /////////////////////////////////
FIRST REQUEST

//BUSQUEDA DE MEDICAMENTOS

    $$('.busqueda-boton').on('click', function () {
        var datosbusqueda = app.form.convertToData('#busqueda-form');
        var busqueda = datosbusqueda.medicamento;
        var busquedaUpper = busqueda.toUpperCase();

        var lista_medicamentos = [];
        var i = 0;

        app.request({
            url: 'http://xxxxxxxx/webapps/get_producto.php?NOM_LARGO=%' + busquedaUpper + '%',
            method: 'POST',
            dataType: 'XML',
            crossDomain: true,
            //data: 			busqueda, 
            success: function (data, textStatus) {
                var doc = $$(new DOMParser().parseFromString(data, 'text/html'));

                doc.find('producto').forEach(function (itm) {
                    // console.log($$(itm).find('nom_largo').text());
                    //console.log($$(itm).find('cod_alfabeta').text());
                    var nombre_med = $$(itm).find('nom_largo').text();
                    var codigo_med = $$(itm).find('cod_alfabeta').text();
                    var s = {};
                    s.nombre = nombre_med;
                    s.codigo = codigo_med;
                    lista_medicamentos.push(s);
                    i++;
                });

                //console.log(lista_medicamentos);

                var virtualList = app.virtualList.create({
                    // List Element
                    el: '.virtual-list-busqueda',
                    // Pass array with items
                    items: lista_medicamentos,
                    emptyTemplate: 'No se encontraron resultados.',
                    // List item Template7 template
                    itemTemplate: '<li class="accordion-item btn-sucursales" id="medicamento{{codigo}}" data-codigo="{{codigo}}">' +
                        '<a href="#" class="item-link btn-sucursales-a item-content no-padding-left" data-codigo="{{codigo}}">' +
                        '<div class="item-inner padding-left">' +
                        '<div class="item-title">' +
                        '<span class="busqueda-resultados-titulo"><b>{{nombre}}</b></span>' +
                        '<div class="item-footer">Ver sucursales</div>' +
                        '</div>' +
                        '</div>' +
                        '</a>' +
                        '<div class="accordion-item-content" id="medic_suc{{codigo}}">' +
                        '<div class="list">' +
                        '<ul class="bg-color-transparent text-color-gray">' + **//Here insert the second rerquest**
                        '</ul>' +
                        ' </div>' +
                        '</div>' +
                        '</li>',

                    // Item height
                    //height: app.theme === 'ios' ? 63 : (app.theme === 'md' ? 73 : 46),
                });

                virtualList.clearCache();

            },
            error: function (xhr, textStatus, errorThrown) {},
        });
    });

    //FIN BUSQUEDA MEDICAMENTOS

SECOND REQUEST

  // búsqueda/search del código sucursales
  app.on('accordionBeforeOpen', function (el) {

        var cod_alfabeta = $$(el).attr('data-codigo');
        console.log(cod_alfabeta);

        var lista_sucursales = [];

          app.request({
            url: 'http://xxxxxxxxxx/webapps/get_stock.php?cod_alfabeta=' + cod_alfabeta,
            method: 'POST',
            dataType: 'XML',
            crossDomain: true,
            success: function (data, textStatus) {

                var docsuc = $$(new DOMParser().parseFromString(data, 'text/html'));

                docsuc.find('sucursal').forEach(function (itmsuc) {
                    var nombre_suc = $$(itmsuc).find('nom_sucursal').text();
                    var localidad_suc = $$(itmsuc).find('des_localidad').text();
                    var telefono_suc = $$(itmsuc).find('des_tel').text();
                    var direccion_suc = $$(itmsuc).find('des_direccion').text();
                    var stock_suc = $$(itmsuc).find('can_stk').text();
                    var suc = {};
                    suc.sucursal = nombre_suc;
                    suc.localidad = localidad_suc;
                    suc.telefono = telefono_suc;
                    suc.direccion = direccion_suc;
                    suc.stock = stock_suc;
                    lista_sucursales.push(suc);
                });
                
                console.log(lista_sucursales);

                //lista/list sucursales 
                var todo = "";
                var t;
                for (t = 0; t < lista_sucursales.length; t++) {
                    console.log(lista_sucursales.length);
                    if (lista_sucursales[t].stock > 0) {
                        console.log(lista_sucursales[t].stock);
                        var sucursal = '<li>' +
                        '<div class="item-content">' +
                        '<div class="item-media"><i class="material-icons">place</i></div>' +
                        '<div class="item-inner no-margin-left">' +
                        '<div class="item-title">' +
                        '<div class="item-header">' + lista_sucursales[t].sucursal + '</div>' +
                        '<b>' + lista_sucursales[t].direccion + '</b><small>, ' + lista_sucursales[t].localidad + '</small>' +
                        '<div class="item-footer">Tel.: ' + lista_sucursales[t].telefono + '</div>' +
                        '</div>' +
                        '</div>' +
                        '</div>' +
                        '</li>';
                        var todo = todo.concat(sucursal);
                        console.log(t);
                    } else {
                        console.log(lista_sucursales[t].stock);
                        console.log(t);
                    };
                };
                //fin/end FOR
                //console.log(todo);
                $$(todo).appendTo( $$('#medic_suc' + codigo_med + ' .list ul') );                      
            },
                error: function (xhr, textStatus, errorThrown) {    
            },
        });
      
    });

Buenas,
Podrias hacer un ejemlo en jsfiddle?

Hola gracias por responder,. Lo solucione de otra manera, usando POPUP,… en vez insertar una VirtualList dentro de otra,.
Con el segundo request lo que hago es crear un POPUP y ahí mostrar los datos,. en lugar de crear una segunda lista virtual para mostrar los datos.

Muchas gracias por responder.

1 Like