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+'&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