 
			
				16/09/2008, 05:32
			
			
			     |  
      |    |    |    Fecha de Ingreso: enero-2007  
						Mensajes: 17
					  Antigüedad: 18 años, 9 meses Puntos: 0     |        |  
  |      Error en IE: Eñes y acentos en responseXML.documentElement        Buenas a todos. Llevo semanas intentando resolver un problema con AJAX en Internet Explorer y no hay manera. He consultado numerosos hilos al respecto y he seguido las instrucciones, pero no hay manera, así que os cuento:   
Mi página es una JSP con codificación iso-8859-1; en ella hay varios campos input y combos select que se rellenan dinámicamente. El problema es que cuando alguno de los valores de dichos campos contiene un carácter especial (ñ o tilde), el responseXML que me devuelve es null.   
En cambio, el responseText sí que es correcto; por ejemplo, un alert('responseText: ' + XmlHttpObj.responseText) devuelve lo siguiente:   
<data> 
   <datanode id="007 - BALEARES"><![CDATA[BALEARES]]></datanode> 
   <datanode id="008 - LA CORUÑA"><![CDATA[LA CORUÑA]]></datanode> 
   <datanode id="009 - LEÓN"><![CDATA[LEÓN]]></datanode> 
   <datanode id="012 - TENERIFE"><![CDATA[TENERIFE]]></datanode> 
<data>   
Lo que es correcto; pero, como ya he comentado, responseXML es null. Este problema sólo ocurre en IE, ya que en Firefox funciona correctamente.   
Todas mis páginas JSP incluyen: response.setHeader("charset","iso-8859-1");   
Os adjunto el código relevante de las funciones involucradas, agradeceré enormemente cualquier orientación. Un saludo.     
// Evento de cambio del valor en un combo, que desencadena el cambio en el siguiente 
function sociedadOnChange() { 
	var sociedad = document.getElementById("sociedad");  
	var selectedopcion1 = sociedad.options[sociedad.selectedIndex].value; 
	var requestUrl = "org_data.jsp" + "?filtro1=" + encodeURIComponent(selectedopcion1);   
	CreateXmlHttpObj(); 
	if(XmlHttpObj) 
	{ 
		XmlHttpObj.onreadystatechange = StateChangeHandler1; 
		XmlHttpObj.open( "POST", requestUrl, true ); 
		XmlHttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
		XmlHttpObj.setRequestHeader("Accept-Charset", "iso-8859-1"); 
		XmlHttpObj.send(''); 
	} 
}   
// StateChangeHandler 
function StateChangeHandler1() 
{ 
	if(XmlHttpObj.readyState == 4) 
	{ 
		if(XmlHttpObj.status == 200) 
		{				 
			// Poblar los combos con sus posibles valores 
			Populatedirter(XmlHttpObj.responseXML.documentElem  ent);   
		} 
	} 
}   
// Función que puebla en select con sus posibles valores 
function Populatedirter(opcion2Node) 
{	 
	var dirter = document.getElementById("dirter"); 
	for (var count = dirter.options.length-1; count >-1; count--) 
	{ 
		dirter.options[count] = null; 
	} 
	if ((opcion2Node !== '')&&(opcion2Node !== null)){ 
		dirter.disabled = false; 
		var opcion2Nodes = opcion2Node.getElementsByTagName("datanode"); 
		var textValue;  
		var optionItem; 
		for (var count = 0; count < opcion2Nodes.length; count++) 
		{ 			 
	   		textValue = GetInnerId(opcion2Nodes[count]); 
			optionItem = new Option( textValue, textValue,  false, false); 
			dirter.options[dirter.length] = optionItem; 
		}				 
		dirter.selectedIndex = -1; 
	} else { 
		dirter.disabled = true; 
	} 
}   
// Recupera el id de un nodo 
function GetInnerId (node) 
{ 
	 return (node.attributes.getNamedItem('id').value) ; 
}           |