Foros del Web » Programando para Internet » Javascript »

Cannot read property

Estas en el tema de Cannot read property en el foro de Javascript en Foros del Web. Buenas, tengo el siguiente código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < form name = "pais_equipo" >     < select name = "pais" onchange ...
  #1 (permalink)  
Antiguo 18/05/2011, 13:36
 
Fecha de Ingreso: agosto-2010
Mensajes: 100
Antigüedad: 14 años, 3 meses
Puntos: 2
Cannot read property

Buenas, tengo el siguiente código:
Código HTML:
Ver original
  1. <form name="pais_equipo">
  2.     <select name="pais" onchange="xajax_getEquipo(document.pais_equipo.pais.options[document.pais_equipos.pais.selectedIndex].value)">
  3.         <?php getPais(); ?>
  4.     </select>
  5.     <select name="equipo">
  6.         <div id="equipoDiv">
  7.             <option value="999">Elije un pa&iacute;s</option>
  8.         </div>
  9.     </select>
  10. </form>
Cuando ejecuto la página en Google Chrome, me devuelve el siguiente error (la consola):
Cita:
Uncaught TypeError: Cannot read property 'pais' of undefined
En la siguiente línea:
Código Javascript:
Ver original
  1. <select name="pais" onchange="xajax_getEquipo(document.pais_equipo.pais.options[document.pais_equipos.pais.selectedIndex].value)">
La funcion xajax_getEquipo esta correctamente definida.
Lo que entiendo del error es que no puede leer la propiedad "pais" o que no esta definida?.
Sinceramente no lo entiendo del todo a js aún.
Cualquier ayuda será agradecida .
Saludos.
  #2 (permalink)  
Antiguo 18/05/2011, 14:57
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Cannot read property

Hola.

Podrias usar this.value en lugar de document.pais_equipo.pais.options[document.pais_equipos.pais.selectedIndex].value


Respecto de tu pregunta, fijate si el PHP te esta enviando correctamente las opciones.
Revisa lalogica de los dos select porque en el que se llama "equipo" tienes una opcion default que dice "elije un pais " (?????)

El div dentro del select .....mmmmm, mejor afuera. El select, en algunos navegadores es un componente muy poco customizable

Saludos
  #3 (permalink)  
Antiguo 18/05/2011, 16:14
 
Fecha de Ingreso: agosto-2010
Mensajes: 100
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Cannot read property

Gracias por la respuesta sysmadryn, ahora me siento a analizar lo que me comentas.
El tema es que estoy practicando Ajax, y quería hacer selects combinados. Donde dependiendo el país, te lista 4 o 5 equipos de fútbol correspondientes.
Saludos.
  #4 (permalink)  
Antiguo 18/05/2011, 16:21
 
Fecha de Ingreso: agosto-2010
Mensajes: 100
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Cannot read property

Sysmadryn hice todo lo que me aconsejaste y me ha devuelto esto, a modo de alert de js.

Cita:
Error: the XML response that was returned from the server is invalid.
Received:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>Select dependientes - Xajax!</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="Geany 0.19.1" />
<?xml version="1.0" encoding="ISO-8859-1" ?><xjx><cmd n="as" t="equipoDiv" p="innerHTML"><![CDATA[<select id='equipo'><option
value='16'>Manchester City</option><option value='17'>Manchester United</option><option value='18'>Tottenham Hotspurs</
option><option value='19'>Sunderland</option></select>]]></cmd></xjx>
Por lo que ando leyendo en el foro, es que tengo alguna etiqueta mal puesta ¿?. Esta es la funcion getEquipo():
Código PHP:
Ver original
  1. function getEquipo($id_pais){
  2.     $respuesta = new xajaxResponse('ISO-8859-1');
  3.     $query = "SELECT e.idequipo, e.nombre FROM Equipo e WHERE e.idPais = $id_pais";
  4.     $res = mysql_query($query);
  5.     $new_select = "<select name='equipo'>";
  6.     while ($row = mysql_fetch_array($res)){
  7.         $new_select .= "<option value='".$row[0]."'>".htmlentities($row[1])."</option>";
  8.     }
  9.     $new_select .= "</select>";
  10.     $respuesta->addAssign("equipoDiv","innerHTML",$new_select);
  11.     return $respuesta;
  12. }

En el form quedo así:
Código HTML:
Ver original
  1. <div id="equipoDiv">
  2.     <select name="equipo">
  3.             <option value="999">Elije un pa&iacute;s</option>
  4.     </select>
  5.     </div>

Nota: Si algún administrador me mueve el thread a Ajax, bienvenido sea, no pensé que de esa duda de js me iba a ir tanto por las ramas :).

Última edición por ramiromd; 18/05/2011 a las 16:29 Razón: agrego informacion
  #5 (permalink)  
Antiguo 19/05/2011, 09:52
 
Fecha de Ingreso: septiembre-2004
Ubicación: La Plata Argentina
Mensajes: 128
Antigüedad: 20 años, 2 meses
Puntos: 9
Respuesta: Cannot read property

Hola.

Si... el problema lo tienes mas por el lado de AJAX y PHP.
Lo que debes hacer con el AJAX es llenar la div "equipoDiv" con el codigo HTML que te devuelve el server llamada con el AJAX.
Yo haria un codigo PHP mucho mas simple. Una consulta a la base y un echo con el codigo HTML que deseas mostrar.


Saludos
  #6 (permalink)  
Antiguo 19/05/2011, 10:35
 
Fecha de Ingreso: agosto-2010
Mensajes: 100
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Cannot read property

Cita:
Iniciado por sysmadryn Ver Mensaje
Hola.

Si... el problema lo tienes mas por el lado de AJAX y PHP.
Lo que debes hacer con el AJAX es llenar la div "equipoDiv" con el codigo HTML que te devuelve el server llamada con el AJAX.
Yo haria un codigo PHP mucho mas simple. Una consulta a la base y un echo con el codigo HTML que deseas mostrar.


Saludos
Lo pude solucionar hoy a la mañana, el problema era que estaba haciendo includes dentro de la etiqueta <head> de html y eso me daba problemas.
Saludos y gracias!:

Etiquetas: read
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 02:58.