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.
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
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP