Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/12/2007, 05:48
lsobpla
 
Fecha de Ingreso: febrero-2005
Mensajes: 44
Antigüedad: 19 años, 3 meses
Puntos: 1
No consigo devolver resultado del formulario

Hola!

Estoy empezando con Ajax, y tengo un problema que no sé cómo solucionar...
Tengo una página .jsp con un formulario que envío automáticamente cada x segundos, mediante javascript con las acciones setTimeout y document.formu.submit().
El caso es q este formulario me tiene q ir devolviendo una respuesta que la voy sacando por el navegador, en plan: cada vez que envio el form se va escribiendo la respuesta en una linea (una detrás de otra).

Para hacer esto he recurrido a Ajax con las funciones:
Código HTML:
function creaAjax(){
  var objetoAjax=false;
  try {
   /*Para navegadores distintos a internet explorer*/
   objetoAjax = new ActiveXObject("Msxml2.XMLHTTP");
  } 
  catch (e) {
   try {
     /*Para explorer*/
     objetoAjax = new ActiveXObject("Microsoft.XMLHTTP");
     } 
     catch (E) {
     objetoAjax = false;
   }
  }

  if (!objetoAjax && typeof XMLHttpRequest!='undefined') {
   objetoAjax = new XMLHttpRequest();
  }
  return objetoAjax;
}
function RecuperaDato (url,capa,valores)
{
   var ajax=creaAjax();
   
   var salida = document.getElementById(capa);

/*Creamos y ejecutamos la instancia si el metodo elegido es POST*/
 
    ajax.open ("POST", url, true);
    ajax.onreadystatechange = function() {
         if (ajax.readyState==1) {
                 salida.innerHTML="Cargando.......";
         }
         else if (ajax.readyState==4){
            if(ajax.status==200)
            {
                 salida.innerHTML=ajax.responseText; 
            }
            else if(ajax.status==404)
                 {
                     salida.innerHTML = "La direccion existe";
                 }
             else
                 {
                     salida.innerHTML = "Error: "+ ajax.status;
                 }
        }
    }
    ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    ajax.send(valores);
   
}
Y llamo a esta función al enviar el formulario con:
Código HTML:
<form name="oculto" method="post" onsubmit="RecuperaDato('acepta.jsp','salida','campo1='+document.getElementById('campo1').value+'&amp;campo2='+document.getElementById('campo2').value); return false;" action="#">
<TABLE>
<TR>
<TD ALIGN="left"><INPUT TYPE="hidden" NAME="campo1" ID="campo1" value="primero"></TD>
</TR>
<TR>
<TD ALIGN="left"><INPUT TYPE="hidden" NAME="campo2" ID="campo2" value="segundo"></TD>
</TR>
<TR>
</TABLE>
</form>
<div id="salida">Valor 1: </div> 
En el acepta.jsp solo recupero una variable y la escribo para probar nada más.
El problema es que me da un error java.lang.NullPointerException en el momento en que se ejecuta document.formu.submit() y ni siquiera me llega a entrar en recuperaDato, parece que el error lo da ya en el formulario (no sé si en el onsubmit o en el action...)

No sé si me habré explicado mu bien... es q todos los ejemplos que he visto eran apretando el botón submit, pero en mi caso quiero hacerlo enviándolo automáticamente.

¿Alguien que tenga algo de idea? Graciassssss