Foros del Web » Programando para Internet » Javascript »

Función automática

Estas en el tema de Función automática en el foro de Javascript en Foros del Web. Hola a todos. Traigo de nuevo algunas cosas apantanadas sobre cómo puedo ejecutar una función. Tengo un botón de la siguiente forma Código: <form name="consulta" ...
  #1 (permalink)  
Antiguo 23/09/2010, 16:38
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta Función automática

Hola a todos. Traigo de nuevo algunas cosas apantanadas sobre cómo puedo ejecutar una función. Tengo un botón de la siguiente forma

Código:
<form name="consulta" onSubmit="MostrarConsulta('consulta.asp?nombre_carpeta=<%=nombre_carpeta%>'); return false">
    <input type="submit" value="Consultar" class="botonp" />
</form>
mi duda es, cómo puedo hacer que la función [MostrarConsulta('consulta.asp?nombre_carpeta=<%=no mbre_carpeta%>'); return false] se ejecute automáticamente sin tener que ejecutarla desde el botón.

Y me explico. Este botón, está dentro de un Do While que se ejecuta después de hacer una consulta a mi bd en sql server y de ahí obtengo nombre_carpeta.

Espero alguien pueda apoyarme. Gracias
  #2 (permalink)  
Antiguo 23/09/2010, 17:09
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Función automática

¿bajo alguna circunstancia? sino, simplemente lo invocas en tu script, es decir dentro de la etiqueta <script>.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 23/09/2010, 17:21
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Función automática

Hola zerokilled, lo que sugieres, ¿es de esta manera?
Código:
<script type="text/javascript">
    MostrarConsulta('consulta.asp?nombre_carpeta=<%=nombre_carpeta%>'); return false;
</script>
  #4 (permalink)  
Antiguo 23/09/2010, 17:23
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Función automática

es correcto, pero sin el return false.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 23/09/2010, 17:34
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Función automática

Este es el script que trato de ejecutar

Código:
<script>
	MostrarConsulta("consulta.asp?nombre_carpeta=<%=nombre_carpeta%>") 
</script>
quizá debo ampliar mi explicación, porque no me funciona.

MostrarConsulta, es una función dentro de un archivo.js

En realidad lo que trato de hacer es ejecutar un ajax [para decirlo resumidamente]. MostrarConsulta está dentro de el archivo ajax.js y lo ejecuto de la siguiente manera

Código:
<script language="JavaScript" type="text/javascript" src="ajax.js"></script>
y a su vez en, consulta.asp, ejecuto una rutina que por si sola, funciona a la perfección.

este es el código de ajax.js

Código:
function objetoAjax()
{
	var xmlhttp=false;
	try 
		{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} 
	catch (e) 
	{
		try 
			{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} 
		catch (E) 
			{xmlhttp = false;}
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') 
		{xmlhttp = new XMLHttpRequest();}
	return xmlhttp;
}
 
function MostrarConsulta(datos)
{
	divResultado = document.getElementById('res');
	ajax=objetoAjax();
	ajax.open("GET", datos, true);
	//alert(datos);
	ajax.onreadystatechange=function()
		{
			if (ajax.readyState==4) 
			{
				for(var cont=0; cont<=10; cont++)
				{
					divResultado.innerHTML = ajax.responseText;					   
					//document.divResultado("res"+cont.toString()).innerHTML = ajax.responseText[cont];
				}
			}
			//else
			//	divResultado.innerHTML = '<img src="ajax-loader.gif">Cargando...';
		}
	ajax.send(null)
}
Pero al ejecutar lo que me sugeriste, no funciona.
  #6 (permalink)  
Antiguo 23/09/2010, 17:49
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Función automática

debo asumir que primero estas cargando el script ajax.js antes de invocar la funcion MostrarConsulta. si es asi, ¿te produce algun error en la consola? si tienes el script al principio -dentro de elemento <head>-, entonces lo mas obvio es porque la funcion esta intentando obtener la referencia de un elemento que aun no existe. exactamente no es ahi donde produce problema, sino cuando intentas interactuar las propiedades. tienes dos soluciones: invoca la funcion en el evento onload, o invocas la funcion al final de tu documento -antes del cierre de <body>-.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 23/09/2010, 17:59
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Función automática

Así es, el script ajax.js lo cargo dentro de head, pero lo que pasa es, que cuando mando llamar la función mediante el botón [que en el caso me pone n botones, como cantidad de elementos extraigo en mi consulta], funciona bien.
  #8 (permalink)  
Antiguo 23/09/2010, 18:34
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Función automática

lamento no poder ser de ayuda, pues no entiendo tu problema quizas por falta de codigo o explicacion. he revisado el tema varias veces, segun lo que explicas y requieres no veo como te produce problema. como ultimo recurso, se me ocurre crear un evento sintetico en el evento onload y enviarlo al formulario. busca por la web con terminos javascrit synthetic events.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 24/09/2010, 16:12
Avatar de JavierMMM  
Fecha de Ingreso: agosto-2008
Ubicación: Justito frente a la computadora.
Mensajes: 278
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Función automática

Este es el código que tengo en mi programa principal pAjax.asp

Código:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Carga</title>

<script language="JavaScript" type="text/javascript">
function objetoAjax()
{
var xmlhttp=false;
try 
{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");} 
catch (e) 
{
try 
{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");} 
catch (E)
{xmlhttp = false;}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') 
{xmlhttp = new XMLHttpRequest();}
return xmlhttp;
}
 
function MostrarConsulta(datos)
{
divResultado = document.getElementById('res');
ajax=objetoAjax();
ajax.open("GET", datos, true);
//alert(datos);
ajax.onreadystatechange=function()
{
if (ajax.readyState==4) 
{
for(var cont=0; cont<=10; cont++)
{
divResultado.innerHTML = ajax.responseText;					   
//document.divResultado("res"+cont.toString()).innerHTML =ajax.responseText[cont];
}
}
//else
//	divResultado.innerHTML = '<img src="ajax-loader.gif">Cargando...';
}
ajax.send(null)
}
</script>

</head>

<body>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Set Ors = Server.CreateObject("ADODB.Recordset")
Conn.open = "DSN=cnx;UID=javier;PWD=mmm;DATABASE=db"
Ors.open "SELECT A.Id, A.Archivo, count(A.Archivo) as Cantidad FROM tablaa A LEFT JOIN tablab B ON (A.id = B.id) WHERE (YEAR(A.fechainicio) >= 2009) AND A.Id NOT IN (Select Id_Archivo From tablac) GROUP BY A.Id, A.Archivo", Conn
Do While not Ors.eof
 nombre_carpeta = Ors("Archivo")
 cantidad = Ors("Cantidad")
 r = r + cantidad
 %> 
  <script>
	MostrarConsulta("consulta.asp?nombre_carpeta=<%=nombre_carpeta%>")
  </script>
 <%
 Ors.movenext
Loop
Ors.Close
set fs=nothing
Conn.close
%>
<div id='res' align='center'></div>
</body>
</html>
y en consulta.asp, para probar que envia el dato tengo

Código:
<%
   response.Write(request.QueryString("nombre_carpeta"))
%>

Pero no funciona... ¿Qué es lo que hago mal?
  #10 (permalink)  
Antiguo 24/09/2010, 17:05
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Función automática

Hola

Puedes aprovecharte de las funciones getRows() y Join() para hacer el proceso de una sola vez.
Una vez que ha tienes todos los registros en una matriz, usas join para montar la query
Cita:
datos = "nombre_carpeta=" & Join(registros, "&nombre_carpeta=")
MostrarConsulta("consulta.asp?<%=datos%>")
Para recogerlos
Cita:
for each campos in request.form
for indice=1 to request.form(campos).count
cmd.Execute ("selctt campo from tabla where campo IN (" & request.form(campos)(indice) & ")")
next
next
Si esto no lo soluciona, no he entendido nada

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Última edición por Adler; 27/09/2010 a las 04:36 Razón: error de concatenación

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 22:21.