Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con AJAX y JSP

Estas en el tema de Problema con AJAX y JSP en el foro de Java en Foros del Web. Tengo estos dos Archivos, el problema es que no puedo efectuar una consulta cuando utiliza acentos y ñ, funciona para IExplorer... pero nada para firefox(Como ...
  #1 (permalink)  
Antiguo 12/12/2008, 15:55
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 9 meses
Puntos: 15
Pregunta Problema con AJAX y JSP

Tengo estos dos Archivos, el problema es que no puedo efectuar una consulta cuando utiliza acentos y ñ, funciona para IExplorer... pero nada para firefox(Como ven he probado las buenas y malas técnicas de aplicación)... pero nada de nada:

Código:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />-->
</head>
<body>

<script type="text/javascript" language="javascript" charset="utf-8">
var ajax;

function funcionCallback()
{
	// Comprobamos si la peticion se ha completado (estado 4)
	if( ajax.readyState == 4 )
	{
		// Comprobamos si la respuesta ha sido correcta (resultado HTTP 200)
		if( ajax.status == 200 )
		{
			// Escribimos el resultado en la pagina HTML mediante DHTML
			var cadena=unescape(ajax.responseText);
			alert(cadena);
			var cadenafinal=cadena.replace(/\+/gi,"");
			document.all.salida.innerHTML = "<b>"+cadenafinal+"</b>";
			document.form1.retorno.value=cadenafinal; 
		}
	}
}

function recuperaResidencia()
{
	// Creamos el control XMLHttpRequest segun el navegador en el que estemos 
	if( window.XMLHttpRequest )
		ajax = new XMLHttpRequest(); // No Internet Explorer
	else
		ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer

	// Almacenamos en el control al funcion que se invocara cuando la peticion
	// cambie de estado	
	ajax.onreadystatechange = funcionCallback;
	
	//Cargamos el dato de filtro
	var valor=document.getElementById("entrada").value;
	//var valor=encodeURIComponent(document.all.entrada.value);
	var Vfiltro = encodeURIComponent(document.all.entrada.value);
	alert("Con Dom: "+valor);
	alert("Sin Dom: "+Vfiltro);
	
	// Enviamos la peticion
	ajax.open( "GET", "pagina2.jsp?persona="+valor, true );
	ajax.send( "" );
}
</script>

<br/>
<br/>
<form id="form1" name="form1">
<input type="text" id="entrada" size="77" value="niño" acceptcharset="UTF-8"/>
<input type="text" id="retorno" size="77"/>
<input type="button" value="Consultar" onclick="recuperaResidencia()"/>
</form>
<br/>
<br/>
Lugar de residencia: <span id="salida"></span>

<br/>
<br/>

</body>
</html>
Código:
<%@ page import="java.net.*" %> 
<%
	//response.setContentType("text/xml");
	response.setHeader("Cache-Control", "no-cache");
	// Obtener el parametro con el nombre de la persona
	
	response.setCharacterEncoding("UTF-8");//Codificaión de respuesta
	//response.setContentType("text/html;charset=UTF-8"); //Lo mismo
	
	String persona = request.getParameter("persona");
	// Convert from Unicode to UTF-8
	byte[] utf8 = persona.getBytes("UTF-8");

	//persona = new String(persona.getBytes("ISO-8859-1"));
	//persona = new String(persona.getBytes("UTF-8"));
	//persona.trim();
	

	// Devolver el lugar de residencia de la persona
	if( persona.equalsIgnoreCase("Jesus Hernandez") )
	{
		out.print("GUADALAJARA");
	}
	else
	if( persona.equalsIgnoreCase("niño") )
	{
	String url = "Bogotá + y algo más...Letra ñ:"+persona;

	//url = new String(url.getBytes("UTF-8"));
	url.trim();
	out.print(url);
	}
	else
	if( persona.equalsIgnoreCase("Fernando") )
	{
		out.print("VALDEMORO");
	}
	else
	{
		out.print("PERSONA DESCONOCIDA"+persona);
	}
%>
  #2 (permalink)  
Antiguo 12/12/2008, 16:12
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 9 meses
Puntos: 15
Respuesta: Problema con AJAX y JSP

Aquí funciona bien para IExplorer, pero nada en Firefox:

index.jsp
Código:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />-->
</head>
<body>

<script type="text/javascript" language="javascript" charset="utf-8">
var ajax;

function funcionCallback()
{
	// Comprobamos si la peticion se ha completado (estado 4)
	if( ajax.readyState == 4 )
	{
		// Comprobamos si la respuesta ha sido correcta (resultado HTTP 200)
		if( ajax.status == 200 )
		{
			// Escribimos el resultado en la pagina HTML mediante DHTML
			var cadena=unescape(ajax.responseText);
			alert(cadena);
			var cadenafinal=cadena.replace(/\+/gi,"");
			document.all.salida.innerHTML = "<b>"+cadenafinal+"</b>";
			document.form1.retorno.value=cadenafinal; 
		}
	}
}

function recuperaResidencia()
{
	// Creamos el control XMLHttpRequest segun el navegador en el que estemos 
	if( window.XMLHttpRequest )
		ajax = new XMLHttpRequest(); // No Internet Explorer
	else
		ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Internet Explorer

	// Almacenamos en el control al funcion que se invocara cuando la peticion
	// cambie de estado	
	ajax.onreadystatechange = funcionCallback;
	
	//Cargamos el dato de filtro
	var valor=document.getElementById("entrada").value;
	//var valor=encodeURIComponent(document.all.entrada.value);
	var Vfiltro = encodeURIComponent(document.all.entrada.value);
	alert("Con Dom: "+valor);
	alert("Sin Dom: "+Vfiltro);
	
	// Enviamos la peticion
	ajax.open( "GET", "pagina2.jsp?persona="+valor, true );
	ajax.send( "" );
}
</script>

<br/>
<br/>
<form id="form1" name="form1">
<input type="text" id="entrada" size="77" value="niño" acceptcharset="UTF-8"/>
<input type="text" id="retorno" size="77"/>
<input type="button" value="Consultar" onclick="recuperaResidencia()"/>
</form>
<br/>
<br/>
Lugar de residencia: <span id="salida"></span>

<br/>
<br/>

</body>
</html>
pagina2.jsp
Código:
<%@ page import="java.net.*" %> 
<%
	//response.setContentType("text/xml");
	response.setHeader("Cache-Control", "no-cache");
	// Obtener el parametro con el nombre de la persona
	
	//response.setCharacterEncoding("UTF-8");//Codificaión de respuesta
	response.setContentType("text/html;charset=UTF-8"); //Lo mismo
	
	String persona = request.getParameter("persona");
	// Convert from Unicode to UTF-8
	//byte[] utf8 = persona.getBytes("UTF-8");

	//persona = new String(persona.getBytes("ISO-8859-1"));
	//persona = new String(persona.getBytes("UTF-8"));
	//persona.trim();
	

	// Devolver el lugar de residencia de la persona
	if( persona.equalsIgnoreCase("Jesus Hernandez") )
	{
		out.print("GUADALAJARA");
	}
	else
	if( persona.equalsIgnoreCase("níño") )
	{
		out.print("Con tilde...");
	}
	else
	if( persona.equalsIgnoreCase("niño") )
	{
	String url = "Bogotá + y algo más...Letra ñ:"+persona;

	//url = new String(url.getBytes("UTF-8"));
	url.trim();
	out.print(url);
	}
	else
	if( persona.equalsIgnoreCase("Fernando") )
	{
		out.print("VALDEMORO");
	}
	else
	{
		out.print("PERSONA DESCONOCIDA"+persona);
	}
%>
Por favor una ayuda...
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:18.