Foros del Web » Programando para Internet » Jquery »

Jquery y tiempo de ejecución

Estas en el tema de Jquery y tiempo de ejecución en el foro de Jquery en Foros del Web. Hola, tengo una función que se ejecuta tal que así: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original for ( i = 0 ; i = ...
  #1 (permalink)  
Antiguo 14/01/2011, 04:09
Avatar de karlic0s  
Fecha de Ingreso: abril-2007
Ubicación: Cartagena (Murcia)
Mensajes: 241
Antigüedad: 17 años, 6 meses
Puntos: 18
Jquery y tiempo de ejecución

Hola, tengo una función que se ejecuta tal que así:


Código Javascript:
Ver original
  1. for (i=0; i=10; i++) {
  2. $("#mi_span").load("ajax.php", {name: i}).ajaxComplete(function(){
  3.  
  4. columna = document.getElementById('mi_span').offsetHeight;
  5.  
  6. });
  7. }

El problema es que en vez de hacer:

- Primer bucle i=0 carga en mi_span el contenido que devuelve ajax.php con la variable name = 0 y pasa al siguiente.
- Segundo bucle i=1 carga en mi_span el contenido que devuelve ajax.php con la variable name = 1 y pasa al siguiente.
- ...

Hace el for sin dejar tiempo a que mi_span cargue, necesito que el html de mi_span cargue, porque por cada bucle cojo el nuevo tamaño de mi_span y conforme se introduzca texto (que es lo que devuelve ajax.php) mi_span crece en píxeles.


Alguna idea?
  #2 (permalink)  
Antiguo 14/01/2011, 06:37
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 11 meses
Puntos: 65
Respuesta: Jquery y tiempo de ejecución

porque cuando haces una petición con ajax el script para continuar no espera hasta recibir una respuesta, fijate sobre llamadas síncronas y asíncronas

pordes usar el parámetro async en false pero si la petición tarda vas a ver que el navegador de cuelga

aparte con load no te va a añadir contenido al que ya tienes, te lo va a sobreescribir


y otra que es mejor enviar una sola petición en vez de varias
en vez de:
ajax.php?name=1
ajax.php?name=2
ajax.php?name=3

podes enviar todos en 1
ajax.php?name[]=1&name[]=2&name[]=3
  #3 (permalink)  
Antiguo 14/01/2011, 19:02
Avatar de tredio  
Fecha de Ingreso: noviembre-2008
Ubicación: Carabobo
Mensajes: 466
Antigüedad: 16 años
Puntos: 66
Respuesta: Jquery y tiempo de ejecución

prueba asi:

Código Javascript:
Ver original
  1. var cargarDatos = function(index){
  2.    if(index!=10){
  3.       $("#mi_span").load("ajax.php", {name: i}).ajaxComplete(function(){
  4.          columna = document.getElementById('mi_span').offsetHeight;
  5.          cargarDatos(index++); });
  6.    }
  7. }
  8.  
  9. cargarDatos(0);

realmente no se lo que tratas de hacer, pero ahi si va a esperar a que termine cada una de las peticiones ajax para empezar la siguiente.
__________________
Extension Google Chrome
dar las gracias no cuesta nada :D
  #4 (permalink)  
Antiguo 14/01/2011, 22:15
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Jquery y tiempo de ejecución

en vez de .load() utiliza .ajax() y puedes enviar la data a una funcion y añadirla en las capas que quieras sin necesidad de hacer doble petición:

Código Javascript:
Ver original
  1. $.ajax({
  2.   url: 'ajax.php',
  3.   success: function(data) {
  4.     $('#mi_span1').html(data);
  5.     $('#mi_span2').html(data);
  6.   }
  7. });
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

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 00:31.