Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/10/2012, 14:30
RabidFish
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Problema con AJAX dentro de .each() de jQuery

Hola a todos.

Tengo un formulario para enviar mensajes privados donde voy añadiendo destinatarios e ingreso un asunto y un mensaje. Cada vez que agrego un destinatario, creo un elemento <div> que contiene el nombre del mismo, y que en su atributo ID lleva el ID del destinatario. Luego recorro todos esos destinatarios para enviarle el mismo mensaje a todos usando .each() y AJAX. Mi problema es que no sé cómo determinar cuándo se han enviado todos los mensajes para poder recargar la página, además de que no sé si esos mensajes se envían uno después de otro o todos a la vez. Dejo el código que tengo hecho, si alguien propone una manera mejor estaría agradecido.

Código:
$('#enviar').click(function() {
		var asunto = $('input[name="asunto"]').val();
		var mensaje = $('textarea[name="mensaje"]').val();
		var destinatarios = $('.destinatario').length;
		var enviados = 0;
		
		if (asunto.length > 0 && mensaje.length > 0 && destinatarios > 0) {
			$('.destinatario').each(function() {
				var id_destinatario = $(this).attr('id');
				
				$.ajax({
					url: configuracion.base_url + 'usuarios/ajax_enviar_mensaje',
					type: 'POST',
					data: 'id_destinatario=' + id_destinatario + '&asunto=' + asunto + '&mensaje=' + mensaje,
					success: function(enviar_mensaje) {
						if (enviar_mensaje == 'ok') {
							enviados++;
						}
					}
				});
			});
			
			if (enviados == destinatarios) {
				alert('Se enviaron todos los mensajes.');
			}
		}
	});
Desde ya, gracias.