Foros del Web » Programando para Internet » Jquery »

Problema al cargar table con ajax

Estas en el tema de Problema al cargar table con ajax en el foro de Jquery en Foros del Web. buenas tardes, disculpen la molestia. en mi proyecto uso las siguientes librerias: jQuery y Bootstrap y mi problema es al siguiente: Código HTML: <table id= ...
  #1 (permalink)  
Antiguo 05/03/2016, 14:06
 
Fecha de Ingreso: diciembre-2013
Ubicación: Yaracuy
Mensajes: 27
Antigüedad: 10 años, 11 meses
Puntos: 0
Exclamación Problema al cargar table con ajax

buenas tardes, disculpen la molestia.

en mi proyecto uso las siguientes librerias: jQuery y Bootstrap y mi problema es al siguiente:
Código HTML:
<table id="example" class="table table-striped table-bordered" cellspacing="0" width="100%">
                <thead>
                   <tr>
                      <th></th>
                      <th hidden="true">Id</th>
                      <th>Carácter</th>
                      <th>Estado</th>
                   </tr>
                </thead>
                <tbody>
                    <div id="resultado"></div>
                </tbody>
            </table> 
codigo ajax, donde mando a llamar la funcion e inserto en el html:

Código:
$(document).ready()
    $(function() {
        $.ajax({
            url: '../model/tipo_rif.php',
            data: {funcion: 'cambiarStatus'},
            type: 'POST',
            success: function(data) {
                $("#resultado").html(data);
                alert(data);
            },
            error: function(){
                alert('Error!');
            }
        });
    });
en el div resultado cargo desde Ajax, cuando se carga la pantalla.. el problema es q cuando lo cargo me aparece fuera del <table>

Código PHP:
<?php
    
require '../model/conexion.php';

    if(isset(
$_POST['funcion']) && !empty($_POST['funcion'])) {
        
$funcion $_POST['funcion'];
        switch(
$funcion) {
            case 
'cambiarStatus' test();break;
            case 
'blah' blah();break;
            
// ...etc...
        
}
    };
    
    function 
test(){
                        
$pdo conexion::connect(); 
                        
$sql "SELECT 
                                id, 
                                caracter, 
                                CASE 
                                WHEN status='t' THEN 'activo'
                                WHEN status='f' THEN 'inactivo'
                                ELSE 'error'
                                END AS status

                                FROM tipos_rif ORDER BY caracter"
;
                        
$con 1;
                        foreach (
$pdo->query($sql) as $row) {
                    
?>
                    <tr>
                        <td><?php echo $con?></td>
                        <td hidden="true"><?php echo $row['id']; ?></td>
                        <td><?php echo $row['caracter']; ?></td>
                        <td><input type="checkbox" data-toggle="toggle" onchange="CambiarStatus(<?php echo $row['id']; ?>)" data-on="Activado" data-off="Desactivado"<?php if($row['status']=="activo"){ ?> checked><label hidden="true">a</label><?php }else{ ?>><label hidden="true">b</label><?php ?></td>
                    </tr>
                    <?php
                        $con
++;
                        }
                        
conexion::disconnect();
    }
y corrobo en un alert q me imprima lo q deseo mando a colocar en el html.. y es correcto..



abre y cierra las filas y las columnas.. no veo el error de xq se salga del <table>

de antemano gracias
  #2 (permalink)  
Antiguo 05/03/2016, 15:20
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Problema al cargar table con ajax

Y es que es algo evidente. El <div> no es un elemento que forme parte de la estructura del <tbody>, por eso es que lo excluye. Sería mejor si cargaras la información directamente en el <tbody>.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 05/03/2016, 16:00
 
Fecha de Ingreso: diciembre-2013
Ubicación: Yaracuy
Mensajes: 27
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Problema al cargar table con ajax

ok tenias razon, gracias :3 crei q funcionaba sustituyendo ese codigo el cual contenia el id. pero no me funciona del todo.

Código HTML:
<table id="cargaTabla" class="table table-striped table-bordered" cellspacing="0" width="100%">
                <thead>
                   <tr>
                      <th></th>
                      <th hidden="true">Id</th>
                      <th>Carácter</th>
                      <th>Estado</th>
                   </tr>
                </thead>
                <tbody id="resultado">
                </tbody>
            </table> 
Código PHP:
<?php
    
require '../model/conexion.php';

    if(isset(
$_POST['funcion']) && !empty($_POST['funcion'])) {
        
$funcion $_POST['funcion'];
        switch(
$funcion) {
            case 
'cargarTabla' cargarTabla();break;
            case 
'blah' blah();break;
            
// ...etc...
        
}
    };
    
    function 
cargarTabla(){
                        
$pdo conexion::connect(); 
                        
$sql "SELECT 
                                id, 
                                caracter, 
                                CASE 
                                WHEN status='t' THEN 'activo'
                                WHEN status='f' THEN 'inactivo'
                                ELSE 'error'
                                END AS status

                                FROM tipos_rif ORDER BY caracter"
;
                        
$con 1;
                        foreach (
$pdo->query($sql) as $row) {
?>
                    <tr>
                        <td><?php echo $con?></td>
                        <td hidden="true"><?php echo $row['id']; ?></td>
                        <td><?php echo $row['caracter']; ?></td>
                        <td><input type="checkbox" data-toggle="toggle" onchange="CambiarStatus(<?php echo $row['id']; ?>)" data-on="Activado" data-off="Desactivado" 
                        <?php if($row['status']=="activo"){ ?>
                            checked><label hidden="true">a</label>
                        <?php }else{ ?>
                            ><label hidden="true">b</label>
                        <?php ?>
                        </td>
                    </tr>
<?php
                        $con
++;
                        }
                        
conexion::disconnect();
    }
?>
la tabla no me carga la libreria datatable q estoy usando.. y unos efectos al checkbox.. como sino escuchara el js y el css de bootstrap.. no se si me hace falta llamar algunas cosas.. y donde las debo llamar..
  #4 (permalink)  
Antiguo 05/03/2016, 16:56
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Problema al cargar table con ajax

Recuerda que estás trabajando con elementos dinámicos, por lo que si los estás tratando como elementos fijos, no va a funcionar.

Solo por si acaso, lee acerca de la delegación de eventos. Es lo que se usa cuando se trabaja con elementos cargados dinámicamente.

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 07/03/2016, 22:29
 
Fecha de Ingreso: diciembre-2013
Ubicación: Yaracuy
Mensajes: 27
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Problema al cargar table con ajax

estuve investigando mas acerca del trabajo de ajax y su funcionamiento dinamico

el resultado q ahora me arroja es este:



y no entiendo por que?

codigo html:
Código HTML:
<table id="cargaTabla" class="table table-striped table-bordered" cellspacing="0" width="100%">
                <thead>
                   <tr>
                      <th></th>
                      <th hidden="true">Id</th>
                      <th>Carácter</th>
                      <th>Estado</th>
                   </tr>
                </thead>
                <tbody class="Datos">
                </tbody>
            </table> 
codigo ajax:
Código:
$(document).ready(function() {
    cargarTabla();
});

function cargarTabla(){
    $.ajax({
        url: '../controller/tipo_rif.php',
        dataType: 'json',
        type: 'POST',
        data: {
            'accion': 'cargarTabla' 
        },
        success: function (data) {
            $.each(data, function(index){
                var etiqueta;
                if($(data[index].status).text('activo')){
                    etiqueta = "<input type='checkbox' data-toggle='toggle' onchange='CambiarStatus("+data[index].id+")' data-on='Activado' data-off='Desactivado' checked><label hidden='true'>a</label>";
                }else if($(data[index].status).text('inactivo')){
                    etiqueta = "<input type='checkbox' data-toggle='toggle' onchange='CambiarStatus("+data[index].id+")' data-on='Activado' data-off='Desactivado'><label hidden='true'>b</label>";
                }
                $(".Datos").append("\
                    <tr>\n\
                        <td>"+data[index].cont+"</td>\n\
                        <td hidden='true'>"+data[index].id+"</td>\n\
                        <td>"+data[index].caracter+"</td>\n\
                        <td>"+etiqueta+"</td>\n\
                    </tr>\n\
                ");
            });
        }
    });
}

codigo php:
Código PHP:
<?php
include("../model/conexion.php");

if(
$_POST["accion"]=="cargarTabla"){
    
cargarTabla();
}

function 
cargarTabla(){
    
$pdo conexion::connect(); 
    
$sql "SELECT 
            id, 
            caracter, 
            CASE 
            WHEN status='t' THEN 'activo'
            WHEN status='f' THEN 'inactivo'
            ELSE 'error'
            END AS status

            FROM tipos_rif ORDER BY caracter"
;
    
$cont=0;
    foreach (
$pdo->query($sql) as $row) {
        
$cont++;
        
$datos[] = array('cont'=>$cont,'id'=>$row['id'],'caracter'=>$row['caracter'],'status'=>$row['status']);
    }
    
conexion::disconnect();
    
header('Content-type: application/json');
    echo 
json_encode($datos);
}
disculpen mi ignorancia pero ya no se q hacer! y me urge

Etiquetas: ajax, javascript
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:51.