Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problema con select creado con xajax en mozilla

Estas en el tema de Problema con select creado con xajax en mozilla en el foro de Frameworks JS en Foros del Web. Hola amigo: Me alegro un montón de que vuelva a estar forosdelweb operativo porque me mientras no ha estado me he quedado algo cojo tengo ...
  #1 (permalink)  
Antiguo 21/02/2009, 03:15
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Problema con select creado con xajax en mozilla

Hola amigo:
Me alegro un montón de que vuelva a estar forosdelweb operativo porque me mientras no ha estado me he quedado algo cojo tengo que admitir. En fin me alegro que todo se solucionara.

Mi problema es que estoy trabajando con xajax y estoy generando un select en función de que lo que se seleccione un un primer select. Esto lo estoy realizando con XAJAX y hasta aquí todo perfecto. Es decir, en todos los navegadores me crea perfectamente el contenido del segundo select en funcion de lo que se haya seleccionado en el primero.

Mi cabreo aparece cuando procedo a enviar por el metodo get estos valores de los selects. En IE me funciona a las mil maravillas es decir me envia tanto los valores del select1 como el del select generado con XAJAX, sin embargo esto no me funciona ni en firefox, ni opera ni safari.

Por qué me pasa esto???

Por cierto, la página desde la que yo llamo a la función ajax para que me cree el select2 es una plantilla .tpl de smarty. Pero como os repito, me aparecen perfectamente los datos del select2 en función de lo que haya escogido en el select1, el único problema está cuando procedo a enviarlos y me pasa en todos los navegadores menos en IE (Vaya por Dios!!!)
Un saludo y a ver que solución me proponéis
  #2 (permalink)  
Antiguo 21/02/2009, 08:18
Avatar de fallenagus  
Fecha de Ingreso: noviembre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Problema con select creado con xajax en mozilla

Como respuesta rápida te digo que en Explorer algunas propiedades de Javascript no son las mismas que en los demás navegadores. pero seria bueno ver tu código que recoge los valores de los selects y los manda al ajax, para poder buscar el problema
  #3 (permalink)  
Antiguo 21/02/2009, 16:16
Avatar de Bellenger  
Fecha de Ingreso: noviembre-2004
Ubicación: En un lugar del Mundo...
Mensajes: 599
Antigüedad: 19 años, 5 meses
Puntos: 4
Respuesta: Problema con select creado con xajax en mozilla

Es probable que el select, no tenga el atributo name, es sabido que IE, confude el name con id, asi que es preferible que esten los dos para evitar problemillas, saludos
__________________
Un Caballero Jura Lealtad. Usa su espada para suprimir la Injusticia No Conoce el Odio y Tampoco el AMOR...
  #4 (permalink)  
Antiguo 23/02/2009, 10:35
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: Problema con select creado con xajax en mozilla

Bueno, vamos a ver retomo el tema ya que no doy con la solución.

A continuación os dejo el código para que veais como se crea todo.

1º Os muestro el código de vista.tpl.php que como dije es una plantilla smarty en la que se crean los select.
COmo podreis ver, aparecen dos select, uno llamados formatos y otro llamado materias. Bien en el evento onChange del select de formatos es desde donde llamo a la función XAJAX para que dependiendo de lo que se le envié me cree un select u otro.
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
{$xajax->printJavascript('smarty/includes/func_logicas/xajax/')}
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>
<body>
{include file='header.tpl.php'}
<div id="contenedor">
<div id="menu_izquierda" style="width:20%; float:left;">
{include file='menu_left_submaterias.tpl.php'}
</div>
<div id="contenidos" style="width:80%; float:inherit;">
<table width="100%">
<form name="formulario" action="submaterias.php" method="get">
  <tr>
    <td rowspan="2" align="right" valign="bottom">Filtrar submaterias por formatos y materias:</td>
    <td align="center" valign="middle">Selecciona formato </td>
    <td colspan="2" align="left" valign="middle">Selecciona una materia </td>
    </tr>
  <tr>
    <td align="center" valign="middle" ><select id="formato" name="formato" onchange="xajax_crea_form_materias(this.value);">
      <option value="0">Todos los formatos</option>
		{html_options values=$id_formato output=$nombre_formato}
    </select></td>
	
    <td align="left" valign="middle" id="form_materias"><select id="materia" name="materia">
      <option value="0">Todas las materias</option>
      
	   {html_options values=$id_materia output=$nombre_materia}
     
    </select></td>
    <td align="left" valign="middle"><input type="submit" name="Submit" value="Filtrar"/></td>
  </tr>
	</form>
  <tr>
  </table>

</div>
<!-- fin de la capa contenedora-->
</div>
</body>
</html> 
A continuación os expongo el código en el que está la función que hace aparece la función xajax a a la que se le llama desde el select de formato.
Código PHP:
function crea_form_materias($id_formato) {
    if(
$id_formato==0) {
        
$condicion="";
    } else {
        
$condicion=" WHERE materias.id_formato=$id_formato ";
    }
    
$salida="";
    
$conexion=conectar();
    
$consulta="SELECT * FROM materias LEFT JOIN formatos ON(formatos.id_formato=materias.id_formato) ".$condicion." ORDER BY materias.fecha_alta ASC";
    
$resultado=mysql_query($consulta);
    if(
$id_formato==0) {

            
$salida.="<SELECT ID=\"materia\" NAME=\"materia\">";
            
$salida.="<OPTION VALUE=\"0\">Selecciona una materia</OPTION>";

            while(
$fila=mysql_fetch_array($resultado)) {
                
$salida.="<OPTION VALUE=".$fila['id_materia'].">".$fila['nombre_materia']."</OPTION>";
            }
        }
        
$salida.="</SELECT>";
    } else {
    
    
$salida.="<SELECT ID=\"materia\" NAME=\"materia\">";
    
//$salida.="<OPTION VALUE=\"0\">Selecciona una materia</OPTION>";
        
while($fila=mysql_fetch_array($resultado)) {
            
$salida.="<OPTION VALUE=".$fila['id_materia'].">".$fila['nombre_materia']."</OPTION>";
        }
    
$salida.="</SELECT>";
    }
    
$respuesta=new xajaxResponse();
    
$respuesta->addAssign('form_materias','innerHTML',$salida);
    return 
$respuesta;
}
$xajax->registerFunction("crea_form_materias");
$xajax->processRequests(); 
En fin creo que podais entenderlo, pero sobre todo me gustaría que os centrarais en que el problema no está en que no se crean los select, que eso sí que funciona, sino que le problema esta en que cuando envío el formulario por medio del botón filtrar, no me recupera los valores del select que se ha creado con ajax y no los envía ni por get ni por POST.

Un saludo y espero vuestra aydua lo antes posible ya que me es muy urgente!!!
Gracias de antemano.
  #5 (permalink)  
Antiguo 23/02/2009, 16:16
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: Problema con select creado con xajax en mozilla

Por favor, necesito ayuda y es urgente!
Gracias!!!
  #6 (permalink)  
Antiguo 24/02/2009, 11:04
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: Problema con select creado con xajax en mozilla

alguien sabe algo???
gracias!!
  #7 (permalink)  
Antiguo 24/02/2009, 12:09
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
Respuesta: Problema con select creado con xajax en mozilla

Bueno, como sabrás el envió por método POST o GET en AJAX tiene sus diferencias...(pero podría ser que al crear el combo por AJAX este perdió sus propiedades-la mas importante es name, verificaste que al cargarlo por ajax se cargo correctamente, no le des solo ver código por que por defecto te muestra lo que está en memoria). Intenta esto, dale un color de fondo a tu combo que se carga por AJAX... la segunda vez que se cargue, debe mantener ese color de no ser así es este el problema. De lo contrario te dejo esto sobre GET y POST:

Un ejemplo:
El código de mi librería AJAX tiene esto:

Identificar método get o post.
Código:
if(this.xParm.method.toLowerCase()!='get'){
var SndParm = this.xParm.Paramt;
}else{
var SndParm=null; 
url = url+'?'+this.xParm.Paramt;
}
Ahora procedo a esto:
Código:
ConnAJX=xxmlhttp; xxmlhttp=null; //Liberar objeto
window['NewFunct'] = this.xParm.onComplete;
ConnAJX.onreadystatechange = this.xParm.onSuccess; //Funcion de retorno
ConnAJX.open(this.xParm.method,url,this.xParm.asynchronous);
ConnAJX.setRequestHeader('Content-Type',this.xParm.contentType); //Header
ConnAJX.send(SndParm); //falta escapar los caracteres
tiempo=setTimeout('ErrorConn()',this.xParm.waitinterval*1000);
El analisis:
ConnAJX es el objecto XMLHTTPR...
Si es por método POST:
ConnAJX.open('POST',url,true); //url = respuest.php
ConnAJX.send(variableparametros);//Aqui se pasan los parámetros
Si es por método GET:
ConnAJX.open('GET',url,true); //url = respuest.php?valor1='hola?&valor2='hola
ConnAJX.send(null); //Debe ir sin parámetros

//Como lo mas probable es que necesites reponer la etiqueta Name y probablemente el ID:
//Si intentas reponer tus atributos, debes tener en cuenta que setAttribute no funciona a en IE:
Código:
if(!IEx){
  Mitagtemp.setAttribute(NodeAttr[i],AtributosC[i]);
}else{
  document.getElementById(Mitagtemp.id)[NodeAttr[i]] = AtributosC[i];
}
//He creado esta función para que puedas revisar si existe el name o el id
var KAtt = exx.attributes.length;//Contar atributos

Con esto tal vez podrás verificar atributos de tu select después de invocarlos por AJAX,
solo debes pasar el ID.

Código:
function verificar(varID){
exx=document.getElementById(varID);
KAtt = exx.attributes.length;//Contar atributos
for (var q=0;q<KAtt;q++){
	Union = exx.attributes.item(q);
	alert('Nombre nodo'+Union.nodeName+'Valor:'+Union.value);
}
}

Última edición por SPAWN3000; 24/02/2009 a las 12:23
  #8 (permalink)  
Antiguo 24/02/2009, 12:48
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: Problema con select creado con xajax en mozilla

hola spawn gracias por tu respuesta:
Yo lo que necesito es que me funcione con xajax, ya que el select se está creando perfectamente ya que dependiendo de las opciones que yo escojo en el select1 me carga uotras opciones en el select2 el problema es que no firefox parece ser que el select se destruye como si no existiera a la hora de enviarlo porque mientras yo selecciono cosas en el select1 en el select2 sí que me los cambia!
  #9 (permalink)  
Antiguo 26/02/2009, 15:32
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: Problema con select creado con xajax en mozilla

Jo, estoy desesperado y no consigo que me funcione en FireFox, sigue como si no existiera el select al enviar el formulario, pero esto por que es?????????????????????!!!!

Que angustia!!!
  #10 (permalink)  
Antiguo 01/03/2009, 15:34
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: Problema con select creado con xajax en mozilla

sigo igual, no encuentro solución.
como puedo hacerlo sin usar XAJAX????
  #11 (permalink)  
Antiguo 03/03/2009, 08:37
Avatar de fallenagus  
Fecha de Ingreso: noviembre-2008
Ubicación: Santa Cruz - Bolivia
Mensajes: 52
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Problema con select creado con xajax en mozilla

Acholaco buenas
Aunque ya paso algo de tiempo espero que te sirva: hice algunas pruebas con tu código y tenias razón si carga bien el segundo SELECT y después me di cuenta que en tu html tenes un error que no todos los navegadores reconocen como tal:

El formulario lo estas abriendo dentro de la tabla y lo estas cerrando en cualquier lado:

Cita:
Iniciado por acholaco Ver Mensaje
<table width="100%">
<form name="formulario" action="submaterias.php" method="get">
<tr>
........
-......
</tr>
</form>
<tr>
</table>
Para mi ese el problema así que probé sacando el formulario afuera de la tabla, o sea que el formulario encierre a la tabla y te cuento que funciono perfecto en firefox y en todos los navegadores, ya hace el submit. tu codigo quedaria asi:

Código html:
Ver original
  1. <form name="formulario" action="submaterias.php" method="get">
  2.    <table width="100%">
  3.          <tr>
  4.            ........
  5.           -......
  6.         </tr>
  7.          <tr>
  8.   </table>
  9. </form>
  #12 (permalink)  
Antiguo 03/03/2009, 10:09
 
Fecha de Ingreso: junio-2006
Mensajes: 125
Antigüedad: 17 años, 10 meses
Puntos: 1
Respuesta: Problema con select creado con xajax en mozilla

alucinante!!!!
mira fallenagus no sabes de la que me has sacado a día de hoy!! Dios mío que ignorancia la mía
Lo que está claro es que todos los días se aprende algo nuevo y cada día que pasa me doy más cuenta de que sin esta web yo no podria trabajar!!!! ni casi vivir!!!
Es una pasada!!!

millones de gracias fallenagusss!!!!!! si algún dia te conociese date por invitado a unas copas!!!
Nos vemos!!!1
  #13 (permalink)  
Antiguo 19/05/2009, 15:23
 
Fecha de Ingreso: mayo-2009
Mensajes: 1
Antigüedad: 14 años, 11 meses
Puntos: 0
De acuerdo Respuesta: Problema con select creado con xajax en mozilla



Realmente me sacaste un problema de varios días....
... me leí creo que más de 30 foros... y todos hacían mención a el código ajax y php ...

... pero la solución a mi problema era ese... tan simple.... EL FORM ARRIBA DE LA TABLA......

...jajaja

NO SE ME VA A OLVIDAR NUUUNCA.....


como dicen por ahí .... no hay nada más importante que los detalles..

Gracias!!!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:49.