Hola a todos, estoy haciendo mis primeros pinitos con AJAX y tengo un problema con la parte de JAVA (de la que no soy muy experto... o nada experto, para ser sincero)
En la parte de HTML tengo varios formularios con la siguiente forma
Código HTML:
<form action="answer.php" method="post" id="formulariocomment0" name="formulariocomment"><input type="hidden" id="eventidformulariocomment0" name="eventid" value="VALOR"/><textarea name="comment" id="commentformulariocomment0" rows="3" cols="50"></textarea> <input type="submit" value="Enviar" name="boton" id="enviar"></form>
En cada formulario aumenta en 1 el número final del id para distinguirlos entre ellos.
El código js os lo copio entero al final, pero pongo antes un extracto de donde creo que está el problema:
Por alguna razón el proceso se bloquea cuando intento pasarle a esta función el parámetro vec
Código:
function procesarEventos(vec)
{
var resultados = document.getElementById("resultados"+vec);
if(conexion1.readyState == 4)
{
if (conexion1.status==200)
{
resultados.innerHTML = 'Gracias.';
}
else
{
resultados.innerHTML='';
alert(conexion1.statusText);
}
}
else
if (conexion1.readyState==1)
resultados.innerHTML = '1';
if (conexion1.readyState==2)
resultados.innerHTML = '2';
if (conexion1.readyState==3)
resultados.innerHTML = '3';
}
El código completo es:
Código:
addEvent(window,'load',inicializarEventos,false);
function inicializarEventos()
{
var ref;
ref=document.getElementsByName('formulariocomment');
for(f=0;f<ref.length;f++)
{
var ref=document.getElementById('formulariocomment'+f);
addEvent(ref,'submit',enviarDatos,false);
}
}
function enviarDatos(e)
{
if (window.event)
{
window.event.returnValue=false;
var vec=window.event.srcElement.getAttribute('id');
enviarFormulario(vec);
}
else
if (e)
{
e.preventDefault();
var vec=e.target.getAttribute('id');
//var resultados = document.getElementById("resultados");
//resultados.innerHTML = vec;
enviarFormulario(vec);
}
}
function retornarDatos(vec)
{
var cad='';
var nom=document.getElementById('eventid'+vec).value;
var com=document.getElementById('comment'+vec).value;
cad='eventid='+encodeURIComponent(nom)+'&comment='+encodeURIComponent(com);
return cad;
}
var conexion1;
function enviarFormulario(vec)
{
conexion1=crearXMLHttpRequest();
conexion1.onreadystatechange = procesarEventos(vec);
conexion1.open('POST','answer.php', true);
conexion1.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
conexion1.send(retornarDatos(vec));
}
function procesarEventos(vec)
{
var resultados = document.getElementById("resultados"+vec);
if(conexion1.readyState == 4)
{
if (conexion1.status==200)
{
resultados.innerHTML = 'Gracias.';
}
else
{
resultados.innerHTML='';
alert(conexion1.statusText);
}
}
else
if (conexion1.readyState==1)
resultados.innerHTML = '1';
if (conexion1.readyState==2)
resultados.innerHTML = '2';
if (conexion1.readyState==3)
resultados.innerHTML = '3';
}
//***************************************
//Funciones comunes a todos los problemas
//***************************************
function addEvent(elemento,nomevento,funcion,captura)
{
if (elemento.attachEvent)
{
elemento.attachEvent('on'+nomevento,funcion);
return true;
}
else
if (elemento.addEventListener)
{
elemento.addEventListener(nomevento,funcion,captura);
return true;
}
else
return false;
}
function crearXMLHttpRequest()
{
var xmlHttp=null;
if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
else
if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
return xmlHttp;
}