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:
Desde ya, gracias. $('#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.'); } } });