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

HttpServletRequest vacío

Estas en el tema de HttpServletRequest vacío en el foro de Frameworks JS en Foros del Web. Quiero insertar los campos de un formulario en la base de datos y que después de hacer el insert me devulva en la misma página ...
  #1 (permalink)  
Antiguo 26/01/2009, 07:51
 
Fecha de Ingreso: marzo-2007
Mensajes: 47
Antigüedad: 17 años, 2 meses
Puntos: 0
HttpServletRequest vacío

Quiero insertar los campos de un formulario en la base de datos y que después de hacer el insert me devulva en la misma página el id que tiene asociado en un campo de texto.
¿Esto se puede hacer? Porque cuando llego al método del servidor el objeto HttpServletRequest está vacío. Porque yo quiero todos los campos del formulario, para obtenerlos e insertarlos

página.jsp
Código HTML:
<input type="text" name="contador" id="contador" readonly="readonly"/>

<input type="button" class="boton" value="Guardar" onclick="mostrarContador()" > 
funcion.js
Código HTML:
function mostrarContador() 
{  
  	conexion1=crearXMLHttpRequest();    
    conexion1.open('POST','ContadorExpedienteAction,true);
    conexion1.onreadystatechange = obtenerContador;    
    conexion1.send(null);

}
function obtenerContador()
{
  
  if(conexion1.readyState == 4)
  {
    if (conexion1.status==200)
    {
        var campoTexto=document.getElementById("contador");  
	      var tagTexto=conexion1.responseXML.getElementsByTagName("contadorTag");	   
	    campoTexto.value=tagTexto[0].firstChild.nodeValue;
	
   	 } 
}
código java
Este objeto request es es que está vacío y no obtengo los parámetros, los datos los obtengo en la función insertar. Esa función está correcta la he probado.
Código PHP:
protected void doPost(HttpServletRequest requestHttpServletResponse responsethrows ServletExceptionIOException {
     
int resultadoinsertar(request,response)    ;
        
      
response.setContentType("text/xml");
      
response.setHeader("Cache-Control","no-cache");
      
int  contador BD_gnexpe.getContadorMaxExpediente();
      
response.getWriter().write("<contadorTag>"+contador+"</contadorTag>");
     
        
        
    } 
Muchas gracias a todos por su tiempo.
  #2 (permalink)  
Antiguo 26/01/2009, 15:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: HttpServletRequest vacío

Hola zucemec,

El problema que veo es en esta línea:

conexion1.open('POST','ContadorExpedienteAction,tr ue);

El segundo parámetro debe de ser el URI correcto a la acción de tu controlador, y aparte te falta cerrar la comilla, por lo que te va a dar error.

Saludos
  #3 (permalink)  
Antiguo 27/01/2009, 01:28
 
Fecha de Ingreso: marzo-2007
Mensajes: 47
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: HttpServletRequest vacío

Primero agradecerte las molestias

Pero no me dí cuenta de que estaba mal copiado, si que cierro las comillas, ahora lo tengo de este modo :
Código HTML:
    conexion1=crearXMLHttpRequest();
    request=document.form[0];
    conexion1.open('POST','ContadorExpedienteAction');
    conexion1.onreadystatechange = obtenerContador;    
    conexion1.send(true);
Y sigo sin poder sacar los parametros del objeto HttpServletRequest.
  #4 (permalink)  
Antiguo 27/01/2009, 03:55
 
Fecha de Ingreso: marzo-2007
Mensajes: 47
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: HttpServletRequest vacío

Bien pues al final he dado con la solución.

Ha sido gracias a la respuesta en otra pregunta de GatoV, que le dijo a un chico que utilizara Prototype para su formulario. No sé si la manera de resolverlo es la más correcta, en cuanto eficiencia porque ni si quiera sabía que existía pero sirve para continuar.

Al final lo único que he cambiado ha sido :
página.jsp
Código HTML:
<form name="expedientes" id="expedientes" onSubmit="return validate()"> 
funciones.js
Código HTML:
 conexion1=crearXMLHttpRequest();   
     function mostrarContador() 
{  
    conexion1=crearXMLHttpRequest();   
        conexion1.open('POST','ContadorExpedienteAction?'+Form.serialize($("expedientes")),true);
    conexion1.onreadystatechange = obtenerContador;    
    conexion1.send(null);
   
}
EL código del servidor es el mismo, obtiene los parámentros con request.getParameter("parametrox");
  #5 (permalink)  
Antiguo 27/01/2009, 15:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: HttpServletRequest vacío

El problema también en tu código anterior era que en send() tienes que mandar las variables que quieres enviar no solamente send(true). En el código que tienes ahora aunque usas 'POST' realmente estas enviado las variables por GET.

Saludos
  #6 (permalink)  
Antiguo 28/01/2009, 01:45
 
Fecha de Ingreso: marzo-2007
Mensajes: 47
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: HttpServletRequest vacío

Pues agradezco tu aclaración, porque la verdad estoy haciendo las cosas un poco a ciegas y esto me sirve para comprender mucho

Ahora está de la siguiente manera
Código HTML:
function mostrarContador() 
{  
    conexion1=crearXMLHttpRequest();   
    conexion1.open('POST','ContadorExpedienteAction');
    conexion1.onreadystatechange = obtenerContador;    
    conexion1.send(Form.serialize($("expedientes")));
   
}
Y de este modo me vuelve a decir que los parametros están vacíos como al principio
  #7 (permalink)  
Antiguo 28/01/2009, 14:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: HttpServletRequest vacío

Prueba hacer un alert con los datos a ver que datos estas enviando, también te recomiendo para estos casos uses la excelente herramienta Firebug de Firefox, sirve adecuadamente para los requests en AJAX ya que puedes ver que datos se estan enviando y cuales recibiendo.

Saludos
  #8 (permalink)  
Antiguo 29/01/2009, 01:37
 
Fecha de Ingreso: marzo-2007
Mensajes: 47
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: HttpServletRequest vacío

Hola

Pues yo utilizaba firebug solo para saber si mis páginas tenían errores javascript, no sabía que eso también se veía, pero si que viajan los datos y no van a vacío y el alert por supuesto muestra datos.

Gracias de nuevo por tu ayuda.
  #9 (permalink)  
Antiguo 29/01/2009, 11:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: HttpServletRequest vacío

En ese caso tu problema parece ser en el Servlet, ya que si los datos se envian y los puedes ver, en ese caso tu JSP no esta recibiendo la información.

Saludos.
  #10 (permalink)  
Antiguo 02/02/2009, 03:13
 
Fecha de Ingreso: marzo-2007
Mensajes: 47
Antigüedad: 17 años, 2 meses
Puntos: 0
De acuerdo Respuesta: HttpServletRequest vacío

Bien, pues como tengo que seguir avanzando con esto, al final he decido pasarlo como GET que así funciona estupendamente, y esto me lo apunto para modificarlo y trastearlo cuando esté más libre de curro.

Te agradezco mucho tu ayuda, pues has sido parte de mi solución.

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 11:45.