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

Ayuda con XMLHttpRequest de Ajax

Estas en el tema de Ayuda con XMLHttpRequest de Ajax en el foro de Frameworks JS en Foros del Web. Hola, soy nuevo en el foro y estoy aprendiendo a usar Ajax, os voy a exponer mi problema lo mas detallado posible. Necesito mostrar en ...
  #1 (permalink)  
Antiguo 31/10/2007, 06:40
 
Fecha de Ingreso: octubre-2007
Mensajes: 28
Antigüedad: 17 años
Puntos: 0
De acuerdo Ayuda con XMLHttpRequest de Ajax

Hola, soy nuevo en el foro y estoy aprendiendo a usar Ajax, os voy a exponer mi problema lo mas detallado posible.

Necesito mostrar en una JSP un grafico utilizando JFreeChart, para ello hice inicialmente un servlet:
Código:
<servlet-mapping>
<servlet-name>ServletGraficoBarraMultiple</servlet-name>
<url-pattern>/ServletGraficoBarraMultiple</url-pattern>
</servletmapping> <servlet>
<servlet-name>ServletGraficoBarraMultiple</servlet-name>
<servlet-class>bw_co_ServletGraficoBarraMultiple</servlet-class>
</servlet>
Entonce en el codigo de la jsp seria,

Código HTML:
<script>[INDENT]
function createXMLHttp(){
		try{
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		}catch(e){
			try{
				xmlHttp =  new ActiveXObject("Microsoft.XMLHTTP");
			}catch(oc){
				xmlHttp = false;
			}
		}
		
		if (!xmlHttp && typeof XMLHttpRequest != "undefined"){
			try{
				xmlHttp = new XMLHttpRequest();
			}catch (E){
				xmlHttp=false;
			}
		}
		return xmlHttp;
}
	function envioInfo (){
		//Creamos el objeto xmlHttpRequest
		alert("Creamos el objeto xmlHttp");
		createXMLHttp();
		
		//Definimos la llamada para POST
		alert("Definimos la llamada para POST");
		var info = document.forms['formularioDiv2'].graficoMens.src;
		
		//Marcar que función manejará la respuesta
		xmlHttp.open("POST","ServletGraficoBarraMultiple",true);
		alert("Marcamos la función que maneja la respuesta");
		xmlHttp.onreadystatechange = recogeInfo;
		
		//Enviar
		alert("enviamos los datos");
		xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
		xmlHttp.send(info);
	}

	function recogeInfo(){
		alert(xmlHttp.readyState + " " + xmlHttp.status);
		if (xmlHttp.readyState == 4){
			document.getElementById("div1").innerHTML=xmlHttp.responseText;
			//document.forms['formularioDiv2'].graficoMens.src=+xmlHttp.responseStream+"'";
			alert(xmlHttp.responseText);
		}
	}
[/INDENT]</script>
<body onLoad="javascript:envioInfo();">
....
<div id="div1">[INDENT]<img src="ServletGraficoBarraMultiple?datos=.....">[/INDENT]</div>
....
</body> 
decir que la url debe ser pasada por POST ya que por GET tiene un limite de 2.048 caracteres, y los datos pueden ser hasta diez veces mas. Ahora tendriamos la función Java que trata los datos enviados a través del POST.

Código:

public class bw_co_ServletGraficoBarraMultiple extends HttpServlet{
public void doPost(HttpServletRequest req, HttpServletResponse res){
//recogemos los parametros de la request //Creamos el graficoBarras graficoBarras = ChartFactory.createBarChart3D(titulo, tituloX, tituloY, dataset, vertical, true, true, false); try{
OutputStream out = res.getOutputStream(); ChartUtilities.writeChartAsPNG(out,graficoBarras,ancho,alto); out.flush(); out.close();
}catch(Exception e){
e.printstacktrace();
}
}
{
Comentaros que el método writeChartAsPNG pinta la imagen a través del OutputStream que se le pasa como parametro "out".

Lo que yo no se es como puedo hacer la función java script recogeInfo() para que me pinte lo que hago en la clase Java bw_co_ServletGraficoBarrasMultiple.

Gracias y un saludo.

Última edición por akiles83; 31/10/2007 a las 06:46
  #2 (permalink)  
Antiguo 09/01/2008, 12:04
 
Fecha de Ingreso: agosto-2007
Mensajes: 2
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: Ayuda con XMLHttpRequest de Ajax

Has encontrado la manera de hacerlo?¿¿?¿ te lo digo pq estoy intentando hacer lo mismo yo ahoira en un proyecto y tp lo consigo. Me ha hablado de una libria prototype q utiliza un Ajax.Update pero no consigo hacerlo funcionar..... Me interesaria muxo saber como terminaste el trabajo si esq lo conseguiste. Saludos y 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




La zona horaria es GMT -6. Ahora son las 19:38.