Foros del Web » Programando para Internet » Jquery »

Problema con AJAX dentro de .each() de jQuery

Estas en el tema de Problema con AJAX dentro de .each() de jQuery en el foro de Jquery en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 03/10/2012, 14:30
 
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.
  #2 (permalink)  
Antiguo 04/10/2012, 07:13
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Problema con AJAX dentro de .each() de jQuery

recuerda que AJAX es asíncrono, así que enviados siempre será 0, en el ciclo debes de preparar a todos los destinatarios en un Array() o un JSON [], luego de que termine envías a todos en una sola petición AJAX y desde el server devuelves a quién se le envió o no, recuerda que el SMTP no puede garantizar que llegue el mensaje a destino, sólo si pudo enviarlo, saludos
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 04/10/2012, 08:51
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: Problema con AJAX dentro de .each() de jQuery

Gracias por responder, pude resolverlo con un array. Gracias nuevamente por tu ayuda.

Última edición por RabidFish; 04/10/2012 a las 22:16

Etiquetas: ajax, formulario, input
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 17:03.