2011-11-30 12 views
6

A veces en mi página hago muchas llamadas ajax a la vez, al mismo tiempo. La idea es que cada elemento se actualice a medida que sus datos estén disponibles (no quiero poner en cola las llamadas). A veces, sin embargo, la página web no actualizará ningún elemento hasta que se completen todas las llamadas ajax.Página espera a que se completen todas las llamadas AJAX antes de actualizar

Por ejemplo, tengo cuatro imágenes seguidas que estoy actualizando: cada imagen tiene su propia devolución de llamada ajax que actualizará su fuente una vez que los datos estén disponibles; el código es como la siguiente:

for (var i = 0; i < numPictures; i++){ 
    Dajaxice.Images.load_picture(callback_function, {'pictureId': i}); 
} 

la callback_function pone la imagen en su elemento de interfaz de usuario, una vez que está listo:

imgSnippet = '<img src="' + data.img_source + '"/>' 
$("#" + data.container_id).html(imgSnippet); 

(datos son los objetos de esta función recibe del servidor)

Estoy usando (como se puede ver en el ejemplo) dajax (complemento para django) para la funcionalidad AJAX. En el servidor tengo un Apache (2.2) ejecutando django 1.3 vía mod_wsgi.

Cuando se ejecuta, aunque algunas llamadas ajax terminan antes (puedo verlo en mi servidor), la página no actualizará ningún elemento hasta que vuelva la última llamada.

¿Alguna sugerencia?

Gracias,

+1

Este es un duplicado de http://stackoverflow.com/questions/7504264/ajax-simultaneous-loading-of-multiple-images, donde las personas parecen haber respondido a su pregunta. No es ese el caso? – dyoo

+1

¿Las llamadas ajax son síncronas? Si es así, es posible que no obtenga actualizaciones de pantalla hasta que devuelva el control de javascript al sistema. – jfriend00

+0

@dyoo: Buen lugar, pero en realidad no es eso. Veo que esto sucede en un servidor Apache multiproceso – Goro

Respuesta

1

me sugieren hacer una matriz para contener todas las imágenes y hacer una nueva función que muestra las imágenes al año con año a todos ellos consiguió desde el servidor y en la llamada de vuelta incremento imagen foreach q contador predefinido cuando el contador es igual al número de imágenes que muestran las fotos y pone a cero el contador y puedes poner cargando en el lugar donde la imagen debe estar hasta el final de ellas wwlith Lo siento, no escribí tu código pero estoy en el móvil tal vez lo publique más tarde si mi respuesta no es clara

1

Puede resolver esto envolviendo el contenido de sus funciones de devolución de llamada con un setTimeout llamada con un tiempo de espera de 0 o 1 milisegundo. Esto libera el sistema para actualizar la pantalla.

Cuestiones relacionadas