Foros del Web » Programando para Internet » Javascript »

No me trae valores de tabla con ajax

Estas en el tema de No me trae valores de tabla con ajax en el foro de Javascript en Foros del Web. Hola muy buenas noches, tengo cierta duda no se que estoy haciendo mal. Soy nuevo utilizando ajax tengo este pequeño problema. tengo una tabla llamada ...
  #1 (permalink)  
Antiguo 19/07/2015, 16:44
 
Fecha de Ingreso: junio-2015
Mensajes: 2
Antigüedad: 8 años, 10 meses
Puntos: 0
No me trae valores de tabla con ajax

Hola muy buenas noches, tengo cierta duda no se que estoy haciendo mal. Soy nuevo utilizando ajax tengo este pequeño problema. tengo una tabla llamada asignaturas y otra cursos.. en donde tengo el campo id_curso en la tabla asignatura.. existe relación en ambas tablas ya que con ella se que asignaturas perteneces a un curso.... quiero traer las asignaturas pertenecientes a un curso.. pero no me trae ningun valor del combo! este es mi codigo trabajo con MVC.
Código PHP:
<html>
<head>
<title> ASIGNACION DE PROFESORES </title>
<link rel="stylesheet" type="text/css" href="css/formulariocss-registros.css">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="script/asignaturas-secciones.js"></script>
</head>
<body>
<h2>  ASIGNACIÓN DE PROFESORES </h2>
<form name="asignacion-profesores" method="POST" action="controlador.php?opc=20">
<table border="1">
    <tr>
        <td colspan="4"> &nbsp; <b>ASIGNACION DE PROFESORES</b> <br /><hr></td>
    </tr>
    <tr>
        <td align="center"> <b>NOMBRE</b></td>
        <td align="center"> <b>AÑO</b></td>
        <td align="center"> <b>ASIGNATURA</b></td>
        <td align="center"> <b>SECCIÓN</b> </td>
    </tr>
    <tr>
        <td class="td-campos" style="width: 210px;"> 
        <select style="width: 200px;"> 
        <option value="0"> Seleccione </option>
    <?php 
    
    
for($i=0$i<count($id); $i++){
    
$sql="SELECT * FROM profesores WHERE id=".$id[$i];
    
    
// echo $sql;
    
    
$r $db->consultas($sql);
    
$datos=mysql_fetch_object($r);
    
    
?> 
        <option value="<?php $datos->id?>"> <?php echo $datos->apellido?> </option>
    <?php
    

    
?> 
        </select><br /><br />
        </td>
        <td class="td-campos" style="width: 200px;">
            <select name="curso" style="width: 120px;" onchange="getCurso(this.value);">
            <option value="" selected=""> Seleccione </option>
    <?php
    $sql2
="SELECT * FROM cursos";
    
$r2 $db->consultas($sql2);
    
    while(
$datos2=mysql_fetch_object($r2)){    
    
?>
            <option value="<?php $datos2->id?>"> <?php echo $datos2->curso.' '.'Año'?></option>
    <?php
    
}
    
?>
            </select><br /><br />
        </td>
        <td class="td-campos" style="width: 200px;">
        <div style="display: inline-table;" id="div_combo2">
                    <select style="width: 180px;" disabled>
                    <option selected="" value="" disabled> Seleccione </option>
                    </select>
            </div><br /><br />
        </td>
    </tr>
    <tr>
        <td align="right" colspan="4"><br /> <button type="submit"> Guardar </button> Agregar <input type="text" name="fila" value="1" size="5"/> Fila(s) <button> Continuar </button> <br /> <br /></td>
    </tr>
    <input type="button" value="Actualizar Página" onclick="window.location.reload()" />
</table>
</form>
</body>
</html>
    <?php
        
    
} else {
        echo 
"<script language='javascript'>
            alert ('No selecciono ningun profesor');
            window.location='vista.php?opc=16'
            </script>"
;
    }
y este es el archivo js

Código Javascript:
Ver original
  1. //FUNCION AJAX PARA LLAMAR LOS DATOS DEL SEGUNDO COMBO
  2.     function getCurso(id_combo1){ //variable que espera la funcion
  3.       var xmlhttp;
  4.  
  5.       if (window.XMLHttpRequest){// codigo for IE7+, Firefox, Chrome, Opera, Safari
  6.         xmlhttp=new XMLHttpRequest();
  7.       }else{// codigo for IE6, IE5
  8.         xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  9.       }
  10.  
  11.       //funcion que se llama cada vez que cambia la propiedad readyState
  12.       xmlhttp.onreadystatechange=function(){
  13.         //readyState 4: peticion finalizada y respuesta lista
  14.         //status 200: OK
  15.         if (xmlhttp.readyState===4 && xmlhttp.status===200){
  16.           //Pasar la respuesta html a div_combo2
  17.           document.getElementById("div_combo2").innerHTML=xmlhttp.responseText;
  18.         }
  19.       };
  20.  
  21.       /* open(metodo, url, asincronico)
  22.        * metodo: post o get
  23.        * url: localizacion del archivo en el servidor
  24.        * asincronico: comunicacion asincronica true o false.
  25.       */
  26.       xmlhttp.open("POST","vista.php?opc=33",true);
  27.  
  28.       //establece el header para la respuesta
  29.       xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  30.  
  31.       //enviamos las variables al archivo get_combo2.php
  32.       xmlhttp.send("id_combo1=" + id_combo1);    
  33.     }


Este deveria traerme los datos


Código PHP:
       case 33:
         
    $id_periodo=$_SESSION['idperiodo'];
    $id_combo1=$_POST["id_combo1"];

    ?>
<select style="width: 180px;" name="curso">
    <option value=""> Seleccione </option>
    <?php 

    $sql
="SELECT * FROM asignaturas WHERE id_curso = $id_combo1 AND id_periodo = $id_periodo";

    
$resultado $db->consultas($sql);
    while(
$datos=mysql_fetch_object($resultado)) {
    
     
?>               
    <option value="<?php echo $datos->id?>"><?php echo  $datos->asignatura; } ?></option>
</select> 
    <?php   
    
break;
}
// FIN DEL SWITCH

Última edición por mtr_1101; 19/07/2015 a las 16:53
  #2 (permalink)  
Antiguo 19/07/2015, 16:57
 
Fecha de Ingreso: junio-2013
Mensajes: 23
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: No me trae valores de tabla con ajax

no envies this.value y usa:

var e = document.getElementById("ID-DEL-SELECT");
var elValor = e.options[e.selectedIndex].value;

es posible que no este llegando el valor correctamente.
  #3 (permalink)  
Antiguo 19/07/2015, 19:18
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: No me trae valores de tabla con ajax

En realidad, Jorge35, la manera más adecuada de enviar el valor seleccionado en un <select> con JavaScript en línea es como mtr_1101 lo está haciendo.

Fíjate en la consola del navegador si se está generando algún mensaje de error. Pulsa la tecla F12 y, en el panel que se desplegará, selecciona "Console" o "Consola", según como se muestre en tu navegador.

Por cierto, no tiene sentido que intentes enviar un dato a través de la URL (opc=33) si mediante el método .send() realizas el envío de los datos, de hecho, al enviarlos y recibirlos mediante POST, solo llega el valor consignado para id_combo1.

En el método .send(), arma la cadena de consulta con ambos valores para que puedas enviarlos:

Código Javascript:
Ver original
  1. xmlhttp.send("id_combo1=" + id_combo1 + "&opc=33");

Saludos
__________________
«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

Etiquetas: ajax, formulario, funcion, html, input, js, php, select, tabla, valor
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 01:02.