TransWikia.com

Porque se me desordena un arreglo cuando lo envio por ajax + Laravel

Stack Overflow en español Asked by albertolg89 on January 1, 2022

Tengo una arreglo que lo mando desde mi controller ordenado a mi vista de esta manera:

public function getGrados(){

    return GradoHermano::orderBy('obtencion', 'desc')->where('reg_miembro_id', $this->id)->get();
}

y en la vista lo recibo de esta forma:

let grados_hermano = JSON.parse("{!! toJsJson( $regMiembro->getGrados() ) !!}");

despues hago un console.log(grados_hermanos) y me lo muestra ordenado. pero cuando lo envio por ajax para buscar algunos elementos que necesito me lo devuelve desordenado, este el codigo:

if(grados_hermano) {

for (var l = 0; l < grados_hermano.length; l++) {

    $.ajax({
        type: 'POST',
        url: '{{ route('regMiembros.datosGrado') }}',
        data: {
            id: grados_hermano[l].grado_id,
            fecha_obtencion_grado: grados_hermano[l].obtencion,
            numero_diploma: grados_hermano[l].num_diploma
        },

        success: function (data) {

        var grado = {
            id_count: 'grado_' + count_grados,
            grados: data.numero,
            fecha_obtencion_grado: data.fecha_obtencion_grado,
            numero_diploma: data.numero_diploma,
            texto: ''
        };

        arreglos_grados.push(grado);
        count_grados++;

            $("#grados option[value='"+ data.numero +"']").hide();

            $('#lista_grados').append('<tr id="' + id_count + '"><td style="text-align: center">' + data.nombre_grado + '</td><td style="text-align: center">' + grado.fecha_obtencion_grado + '</td><td style="text-align: center">' + MostrarDiploma(data.numero, grado.numero_diploma) + '</td><td style="text-align: center;"><button class="glyphicon glyphicon-trash" onclick="eliminarGrado('' + grado.id_count + '','' + grado.grados +'', '' + grado.texto +'')"></buton></td></tr>');

        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(jqXHR.responseText);
        }
    });
}


}

porque puede suceder esto. porque si pasa el elemento según un orden para el ajax cuando se devuelve y guardo en un arreglo usando push se desordena.

One Answer

La solución que emplee es la de hacer todo en el controller y me funciona perfectamente. Aquí dejo la respuesta de como lo solucioné:

En mi controller hice esto:

$arreglo_grados = [];
$count = 0;

$grados_ordenados = $regMiembro->getGrados();

foreach($grados_ordenados as $ordenados){

$grado_prueba = [
        'id_count' => 'grado_'. $count,
        'grados' => $ordenados->getNumeroGrado(),
        'fecha_obtencion_grado' => ObtenerFechaInicial($ordenados->obtencion),
        'numero_diploma' => $ordenados->num_diploma,
        'texto' => $ordenados->getGrado()->nombre
];

$arreglo_grados [] = $grado_prueba;
$count ++;
}

en la vista:

grados_hermano = JSON.parse("{!! toJsJson( $arreglo_grados ) !!}");

if(grados_hermano) {
    for (var l = 0; l < grados_hermano.length; l++) {

        var grado = {
            id_count: grados_hermano[l].id_count,
            grados: grados_hermano[l].grados,
            fecha_obtencion_grado: grados_hermano[l].fecha_obtencion_grado,
            numero_diploma: grados_hermano[l].numero_diploma,
            texto: grados_hermano[l].texto
        };

        arreglos_grados.push(grado);
        count_grados++;

        $("#grados option[value='"+ grados_hermano[l].grados +"']").hide();

        $('#lista_grados').append('<tr id="' + grados_hermano[l].id_count + '"><td style="text-align: center">' + grados_hermano[l].texto + '</td><td style="text-align: center">' + grado.fecha_obtencion_grado + '</td><td style="text-align: center">' + MostrarDiploma(grado.grados, grado.numero_diploma) + '</td><td style="text-align: center;"><button class="glyphicon glyphicon-trash" onclick="eliminarGrado('' + grado.id_count + '','' + grado.grados +'', '' + grado.texto +'')"></buton></td></tr>');

    }
}

Answered by albertolg89 on January 1, 2022

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP