Foros del Web » Programando para Internet » Javascript »

Tiempo ejecución

Estas en el tema de Tiempo ejecución en el foro de Javascript en Foros del Web. hola, estoy enviando un formulario por Post usando un script de ajax para que no se me recargue la pagina y ejecutar una funcion de ...
  #1 (permalink)  
Antiguo 31/01/2013, 06:59
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 13 años
Puntos: 0
Tiempo ejecución

hola,
estoy enviando un formulario por Post usando un script de ajax para que no se me recargue la pagina y ejecutar una funcion de javascript que hace un reload sobre un grid. no se como hacer un tipo barra de progreso o reloj de progreso contando el tiempo real en que se ejecuta el script en el servidor y devuelve la respuesta.
este es mi escript
Código:
function modelo(){
	var model = document.getElementById("model");
	dia = document.getElementById('dias');
	proba_dia = dia.value;
	espe = document.getElementById('especie');
	meti = document.getElementById('espacio');
	proba_meti = meti.value;
	var txt='';
	var i;
	var count = 0;
	for (i=0; i<espe.options.length; i++) {
	    if (espe.options[i].selected) {
	      if (count==0)
		  	txt+= "'"+espe.options[i].value+"'";
			else
			 txt+= "#'"+espe.options[i].value+"'";
	    }
	count++;
	}
	if(txt == ""){
		alert("<?php echo $lang['text_170']; ?>");
		} else {
			url_espe='dias='+proba_dia+'&especie='+txt+'&espacio='+proba_meti;
	}
	xhr3(url_espe);
}
var xmlhttp; 
function xhr3(model){ 
		if (window.XMLHttpRequest)
  			{
  				xmlhttp=new XMLHttpRequest();
	  		}
		else
	  		{
  				xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  		}
		xmlhttp.onreadystatechange = RespuestaModel; 
		xmlhttp.open("POST", "run_modelo.php", true); 
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", 3);
		xmlhttp.setRequestHeader("Connection", "close");
		xmlhttp.send(model);
		}
function RespuestaModel(){
		if(xmlhttp.readyState == 4) {
      		if(xmlhttp.status == 200) {
				storemodelado.load();
				alert("<?php echo $lang['text_186']; ?>");
			}
    	}
}
le digo que cuando se ejecute, cargue el store y haga el alert. lo que quiero es mostrar un progreso o controlar de algun modo desde que pincho el boton hasta que el servidor devuelve el resultado.
Gracias por la ayuda. Un saludo.
  #2 (permalink)  
Antiguo 31/01/2013, 07:21
Avatar de fjrueda  
Fecha de Ingreso: marzo-2008
Ubicación: Bucaramanga
Mensajes: 313
Antigüedad: 16 años, 1 mes
Puntos: 35
Respuesta: Tiempo ejecución

emeotero, Buenos dias.

De las barras de progreso ya se ha hablado en el foro muchas bcs, podria buscar alguno, de todas formas le indico una web en la que explican de forma bien sencilla con Jquery aqui.

Ya usted tendra que manejar los porcentajes de crecimiento con las cantidades de los ciclos en su for (Por otro lado yo veo como raro ese ajax).

me cuenta como le va.
__________________
I am ME, Soo Who You ?? ... You Not me.
Web
@fjrueda_fmurdah
  #3 (permalink)  
Antiguo 31/01/2013, 08:44
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Tiempo ejecución

Cita:
Iniciado por emeotero Ver Mensaje
hola,
estoy enviando un formulario por Post usando un script de ajax para que no se me recargue la pagina y ejecutar una funcion de javascript que hace un reload sobre un grid. no se como hacer un tipo barra de progreso o reloj de progreso contando el tiempo real en que se ejecuta el script en el servidor y devuelve la respuesta.
este es mi escript
Código:
function modelo(){
	var model = document.getElementById("model");
	dia = document.getElementById('dias');
	proba_dia = dia.value;
	espe = document.getElementById('especie');
	meti = document.getElementById('espacio');
	proba_meti = meti.value;
	var txt='';
	var i;
	var count = 0;
	for (i=0; i<espe.options.length; i++) {
	    if (espe.options[i].selected) {
	      if (count==0)
		  	txt+= "'"+espe.options[i].value+"'";
			else
			 txt+= "#'"+espe.options[i].value+"'";
	    }
	count++;
	}
	if(txt == ""){
		alert("<?php echo $lang['text_170']; ?>");
		} else {
			url_espe='dias='+proba_dia+'&especie='+txt+'&espacio='+proba_meti;
	}
	xhr3(url_espe);
}
var xmlhttp; 
function xhr3(model){ 
		if (window.XMLHttpRequest)
  			{
  				xmlhttp=new XMLHttpRequest();
	  		}
		else
	  		{
  				xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  		}
		xmlhttp.onreadystatechange = RespuestaModel; 
		xmlhttp.open("POST", "run_modelo.php", true); 
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.setRequestHeader("Content-length", 3);
		xmlhttp.setRequestHeader("Connection", "close");
		xmlhttp.send(model);
		}
function RespuestaModel(){
		if(xmlhttp.readyState == 4) {
      		if(xmlhttp.status == 200) {
				storemodelado.load();
				alert("<?php echo $lang['text_186']; ?>");
			}
    	}
}
le digo que cuando se ejecute, cargue el store y haga el alert. lo que quiero es mostrar un progreso o controlar de algun modo desde que pincho el boton hasta que el servidor devuelve el resultado.
Gracias por la ayuda. Un saludo.
Esto no es necesariamente una barra de progreso, pero te permitiría controlar el tiempo de ejecución

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <title>Timer Respuesta Ajax</title>
  6.  
  7. <style type="text/css">
  8. /*<![CDATA[*/
  9.  
  10. #tiempo_carga{
  11.     height: 10px;
  12.     line-height: 10px;
  13.     display: inline-block;
  14.     font-size: 10px;
  15.     font-family: arial, sans-serif;
  16. }
  17. #barra_carga{
  18.     height: 10px;
  19.     width: 0;
  20.     background: lime;
  21.     display: inline-block;
  22.     margin-right: 5px;
  23. }
  24. /*]]>*/
  25. <script type="text/javascript">
  26. //<![CDATA[
  27. var milisegundos = 0;
  28. var segundos = 0;
  29. var timer;
  30.  
  31. function mostrar(){
  32. if (milisegundos>=9){
  33. milisegundos=0;
  34. segundos+=1;
  35. }else{
  36. milisegundos+=1;
  37. }
  38. document.getElementById('tiempo_carga').innerHTML = segundos + "." + milisegundos + ' segs.';
  39. document.getElementById('barra_carga').style.width = (segundos*4) + "px";
  40. timer = setTimeout("mostrar()",100);
  41. }
  42.  
  43. function iniciar() {
  44. if (timer > 0){
  45. return;
  46. }
  47. mostrar();
  48. // emulamos el tiempo de respuesta de Ajax
  49. // es decir, al recibir la respuesta se llama simplemente a la función detener();
  50. setTimeout('detener()', 7200);
  51. }
  52.  
  53.  
  54. function detener() {
  55. clearTimeout(timer);
  56. timer = 0;
  57. milisegundos = 0;
  58. segundos = 0;
  59. }
  60. //]]>
  61. </head>
  62. <form action="#">
  63. <!-- cuando llamamos la función Ajax y hacemos el post se debe de llamar la función iniciar()
  64. en el ejemplo la llamamos desde el input button -->
  65. <p>
  66. <input type="button" value="llamar Ajax" onclick="iniciar()" />
  67. <br/>
  68. </p>
  69. </form>
  70. <div id="barra_carga"><!-- muestra tiempo de ejecución --></div><div id="tiempo_carga" ><!-- muestra tiempo de ejecución --></div>
  71. </body>
  72. </html>


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 31/01/2013, 08:58
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 13 años
Puntos: 0
Respuesta: Tiempo ejecución

Hola,
antes de nada gracias a los dos fjrueda y emprear. Fjrueda, echare un ojo por el foro, gracias.
Emprear, me gusta el script, pero el problema es que controlas tu manualmente el tiempo de ejecución, tienes que hacer una previsión del tiempo que le va a llevar al servidor ejecutar el script, no?, no se puede coger automaticamente?
gracias de nuevo
  #5 (permalink)  
Antiguo 31/01/2013, 09:34
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Tiempo ejecución

Cita:
Iniciado por emeotero Ver Mensaje
Hola,
antes de nada gracias a los dos fjrueda y emprear. Fjrueda, echare un ojo por el foro, gracias.
Emprear, me gusta el script, pero el problema es que controlas tu manualmente el tiempo de ejecución, tienes que hacer una previsión del tiempo que le va a llevar al servidor ejecutar el script, no?, no se puede coger automaticamente?
gracias de nuevo
No, eso es solo para la demo, fijate un ejemplo real

http://foros.emprear.com/ajax/ajax_t..._ajax_fdw.html
Mira el código fuente y el de cargarAjax.js para ver dónde llamé las funciones iniciar(), detener(). Por supuesto que si la carga es muy rápida no es mucho lo que vas a ver de la barra de progreso (fake), el valor de los segundos es real

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #6 (permalink)  
Antiguo 31/01/2013, 09:40
 
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Compostela
Mensajes: 126
Antigüedad: 13 años
Puntos: 0
Respuesta: Tiempo ejecución

Gracias emprear!!! mi pagina php corre un modelo de predicción, con lo que, entre que envia la consulta ejecuta el script y devuelve el resultado pasan sobre 14/15 segundos, siendo optimistas pq depende de la cantidad de datos que tenga que obtener de la base de datos.

Gracias de nuevo. voy a trabajar en ello.
  #7 (permalink)  
Antiguo 31/01/2013, 09:59
Avatar de fjrueda  
Fecha de Ingreso: marzo-2008
Ubicación: Bucaramanga
Mensajes: 313
Antigüedad: 16 años, 1 mes
Puntos: 35
Respuesta: Tiempo ejecución

Bueno, si va a hacer uso del ejemplo de @emprear (me parece bien) puede modificarlo y agregar la barra de progreso, la barra debe crecer segun "dato procesado y datos total consultados", con mysql o postgres (o cualquier motor de bd) usted puede saber cuantos datos resuelve la consulta antes de procesarlos y de esa forma va haciendo que cresca la barra de progreso.

No es complicado, pero de todas formas si no le funciona postee lo que tenga modificaco y lo resolvemos.
__________________
I am ME, Soo Who You ?? ... You Not me.
Web
@fjrueda_fmurdah

Etiquetas: ajax, formulario, funcion
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 04:57.