[Ayuda]Ajax - PHP como mostrar resultados de la db

Thomas

New member
Mensajes
56
Puntos de reacción
0
Puntos
0
Buenas geeklaber's jjj,, estoy teniendo problemas a la hora de mostrar el resultado de una query que estoy realizando, ese resultado que me da la db lo estoy devolviendo en un array para luego codificarlo con
Código:
json_encode($result);
.
Pero el problema de verda esta en el codigo js que no se de que manera hacer que se muestren todos los resultados sin que se vuelva loco el navegador con un ciclo.

Esta es la funcion js con la que pido los datos, con el console log me recorre cada uno de los datos que paso por json pero cuando intento devovlerlo en html solamente me muestra el ultimo.

Código:
function dpt_getToDb()
{
    console.log('Metodo get cargado');
    $.getJSON('departamentos/department_get', function(result){
        if(result.success) $.each(result.data, function (i, v) {
           console.log(v['id'] + v['dpt_name']);
        })
    })
}
...
 
Mano tienes que ir encadenando los trozos en otra variable o hacer una salida cada vez que recibas algo. Si es una variable que se sobreescribe tienes que mostrar los valores a medida que los recives o simplemente te mostrara lo que hay en ella al final del ciclo y eso es lo ultimo que se le asigno.

Por ejemplo
Código:
  $data = "Primer recibo";
  $data = "Segundo recibo";
  $data = "Tercer recibo";
  print($data); //Muestra "Tercer recibo"

No estoy ducho en jquery. Te escribo de lo que se
 
Thomas dijo:
Buenas geeklaber's jjj,, estoy teniendo problemas a la hora de mostrar el resultado de una query que estoy realizando, ese resultado que me da la db lo estoy devolviendo en un array para luego codificarlo con
Código:
json_encode($result);
.
Pero el problema de verda esta en el codigo js que no se de que manera hacer que se muestren todos los resultados sin que se vuelva loco el navegador con un ciclo.

Esta es la funcion js con la que pido los datos, con el console log me recorre cada uno de los datos que paso por json pero cuando intento devovlerlo en html solamente me muestra el ultimo.

Código:
function dpt_getToDb()
{
    console.log('Metodo get cargado');
    $.getJSON('departamentos/department_get', function(result){
        if(result.success) $.each(result.data, function (i, v) {
           console.log(v['id'] + v['dpt_name']);
        })
    })
}
...
Normalmente si son varios datos, encadenalos en una variable, ej:
Código:
html = '<ul>'
                for (var i = 0; i < e.length; i++) {
                    html += '<li>e[i].valor</li>'
                }
html+="</ul>"
$.(".elemento").html(html)
Este codigo coje un arreglo que viene por ajax y incrusta los valores en un HTML, el cual actualizo en la clase elemento, pero puedes hacerlo por varias vias. La esencia es que vayas asignando mientras vas leyendo. SAlu2s
 
MacKey Dvd , esto fue lo que hice tomando porcines de ambos comentarios

Código:
$(document).ready(function () {
    show_dpt();

    /**
     *  Obtiene y lista en una tabla los departamentos agregados a la database
     */
    function show_dpt() {
        $.ajax({
            type: 'ajax',
            url: 'departamentos/department_get',
            async: false,
            dataType: 'json',
            success: function (data) {
                if(data != null)
                {
                    var html = '';
                    var i;
                    for (i = 0; i < data.length; i++) {

                        html += '<tr>' +
                            '<td>' + data[i].id + '</td>' +
                            '<td>' + data[i].dpt_name + '</td>' +
                            '<td>' + data[i].dpt_desc.substr(0, 50) + '</td>' +
                            '<th style="text-align: right;">' +
                            '<a href="javascript:void(0);" class="btn btn-info btn-sm item_edit" data-dpt_id_edit="' + data[i].id + '" data-dpt_name_edit="' + data[i].dpt_name + '" data-dpt_desc_edit="' + data[i].dpt_desc + '" data-dpt_img_edit="' + data[i].dpt_img + '" data-dpt_active_edit="' + data[i].dpt_active + '">Edit</a>' + ' ' +
                            '<a href="javascript:void(0);" class="btn btn-danger btn-sm item_delete" data-dpt_id_delete="'+ data[i].id +'">Delete</a>' +
                            '</th>' +
                            '</tr>';
                    }
                    $('#print-dpt').html(html);
                } else {
                    $('#table').hide();
                    $('#msg').html("<h3>No hay datos para mostrar </h3>");
                }
            }
        });
    }
 
Thomas dijo:
MacKey Dvd , esto fue lo que hice tomando porcines de ambos comentarios

Código:
$(document).ready(function () {
    show_dpt();

    /**
     *  Obtiene y lista en una tabla los departamentos agregados a la database
     */
    function show_dpt() {
        $.ajax({
            type: 'ajax',
            url: 'departamentos/department_get',
            async: false,
            dataType: 'json',
            success: function (data) {
                if(data != null)
                {
                    var html = '';
                    var i;
                    for (i = 0; i < data.length; i++) {

                        html += '<tr>' +
                            '<td>' + data[i].id + '</td>' +
                            '<td>' + data[i].dpt_name + '</td>' +
                            '<td>' + data[i].dpt_desc.substr(0, 50) + '</td>' +
                            '<th style="text-align: right;">' +
                            '<a href="javascript:void(0);" class="btn btn-info btn-sm item_edit" data-dpt_id_edit="' + data[i].id + '" data-dpt_name_edit="' + data[i].dpt_name + '" data-dpt_desc_edit="' + data[i].dpt_desc + '" data-dpt_img_edit="' + data[i].dpt_img + '" data-dpt_active_edit="' + data[i].dpt_active + '">Edit</a>' + ' ' +
                            '<a href="javascript:void(0);" class="btn btn-danger btn-sm item_delete" data-dpt_id_delete="'+ data[i].id +'">Delete</a>' +
                            '</th>' +
                            '</tr>';
                    }
                    $('#print-dpt').html(html);
                } else {
                    $('#table').hide();
                    $('#msg').html("<h3>No hay datos para mostrar </h3>");
                }
            }
        });
    }
mmm no esta mal, pero prefiero usar una clase para enviar o tomar datos por AJAX en JavaScript, y de alli hago funciones mediante una interfaz. SAlu2s
 
MMM tendria que ver que tal, estoy recien usando ajax para hacer las cosas un poco maas asincronas si es asi como se llama.
 
Thomas dijo:
MMM tendria que ver que tal, estoy recien usando ajax para hacer las cosas un poco maas asincronas si es asi como se llama.
Perdón por preguntar tan tarde, pero ¿por qué pones en la llamada a ajax la opción "async: false"?
 
Atrás
Arriba