Foros del Web » Programando para Internet » Javascript »

Función no recibe parametro

Estas en el tema de Función no recibe parametro en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/04/2011, 02:24
 
Fecha de Ingreso: julio-2008
Mensajes: 84
Antigüedad: 15 años, 9 meses
Puntos: 0
Función no recibe parametro

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;
}
  #2 (permalink)  
Antiguo 19/04/2011, 06:25
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 11 meses
Puntos: 310
Respuesta: Función no recibe parametro

Prueba cambiando:
Cita:
conexion1.onreadystatechange = procesarEventos(vec);
por:
Cita:
conexion1.onreadystatechange = function(){ procesarEventos(vec); };
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red

Etiquetas: Ninguno
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 16:38.