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

Problemas en el xml

Estas en el tema de Problemas en el xml en el foro de Frameworks JS en Foros del Web. Hola Estimados: Voy a tratar de ser lo mas claro y conciso posible. Este código es el tipico autocompletar cuando uno ingresa una letra en ...
  #1 (permalink)  
Antiguo 06/01/2010, 14:55
 
Fecha de Ingreso: noviembre-2009
Mensajes: 8
Antigüedad: 14 años, 5 meses
Puntos: 0
Pregunta Problemas en el xml

Hola Estimados:
Voy a tratar de ser lo mas claro y conciso posible.
Este código es el tipico autocompletar cuando uno ingresa una letra en el input, tipo google.
Todo funciona bien, excepto cuando la letra comienza en a, c y otras. En la base de datos existen nombres que comienzan con a y c , y como dato anexo puedo agregar que en Mozilla estas letras funcionan bien y entrega la lista como se debe, el problema es en IE.

Tengo un archivo.php, el cual al ejecutarse arma un xml con nombres buscados en una base de datos.

archivo.php, resumido, la consulta sql esta bien.
Código PHP:
// Devuelvo el XML con la palabra que mostramos (con los '_') y si hay éxito o no
    $xml  = '<?xml version="1.0" standalone="yes"?>';
    $xml .= '<datos>';
    foreach ($datos as $dato) {
        if (strpos(strtoupper($dato), strtoupper($texto)) === 0 OR $texto == "") {
            $xml .= '<nombre>'.$dato.'</nombre>';
        }
    }
    $xml .= '</datos>';
    header("Content-type: text/xml");
    echo $xml;
recogo de esta manera en el archivo.js, ojo porque esta resumido:
Código:
if(ajax.readyState==4){
    var datos = ajax.responseXML;
   //busca por las etiquetas creadas en el xml, en este caso la etiqueta <nombre>
   var nombres = datos.getElementsByTagName("nombre");
   if (nombres) {
        for (var i=0; i<nombres.length; i++) {
	//se ingresa en el arrelgo el valor de cada etiqueta <nombre> 
                //creado en el xml.
	listaNombres[listaNombres.length] = nombres[i].firstChild.data;
        }
    }
    //muestra la lista de nombres
    escribeLista(obj, listaNombres);
}
Como mencioné antes el problema es de IE que por alguna razón que no he podido descubrir, algunas letras no las pasa al var datos = ajax.responseXML. Pero existen en la base de datos y en Mozilla funciona correctamente, en Mozilla todas las letras funcionan.

Cualquier tips es agradecido. Muchas gracias.
  #2 (permalink)  
Antiguo 06/01/2010, 19:33
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Problemas en el xml

Más importante que el atributo standalone es el atributo encoding cuando se define el xml:
Código PHP:
<?xml version="1.0" encoding="utf-8"?>
o
Código PHP:
<?xml version="1.0" encoding="iso-8859-1"?>
También deberías revisar el xml resultante a ver si no se trata de un problema de caracteres, en cuyo caso podrías usar utf8_encode ó utf8_decode o alguna función semejante. Y quizá te convendría envolver la salida en nodos cdata.
Te vendría bien echarle un ojo a este magnífico trabajo de caricatos:
http://www.caricatos.net/DOM/ajax.php

Última edición por Panino5001; 06/01/2010 a las 21:15
  #3 (permalink)  
Antiguo 07/01/2010, 06:38
 
Fecha de Ingreso: noviembre-2009
Mensajes: 8
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problemas en el xml

Cita:
Iniciado por Panino5001 Ver Mensaje
Más importante que el atributo standalone es el atributo encoding cuando se define el xml:
Código PHP:
<?xml version="1.0" encoding="utf-8"?>
o
Código PHP:
<?xml version="1.0" encoding="iso-8859-1"?>
También deberías revisar el xml resultante a ver si no se trata de un problema de caracteres, en cuyo caso podrías usar utf8_encode ó utf8_decode o alguna función semejante. Y quizá te convendría envolver la salida en nodos cdata.
Te vendría bien echarle un ojo a este magnífico trabajo de caricatos:
[url]http://www.caricatos.net/DOM/ajax.php[/url]
Muchas gracias problema resuelto. Era porque habian caracteres como la ñ , al usar utf8_encode, aparecieron sin problemas.

Ahora sólo como curosidad, como lo hacen para hacer aparecer letras como la ñ en IE? una vez que utilizo utf8_encode, pasa al js y acá existe alguna función para volver aparecer la ñ??

Gracias.

Etiquetas: ajax, xml
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 18:53.