Bonjour à tous,

Je veux faire une barre de progression pour envoi de courriel.

En premier temps, je récupère la liste de mes courriels avec ajax, ensuite je fais un each pour chaque élément. Rien de trop compliqué !

Voici mon code

Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  if(confirm('Êtes-vous sûr de vouloir envoyer ce message à tous les parents inscris ?')){
    $.ajax({
      async : false,
      url : "../ajax/returncourriel.php",
      data : {sujet:formObj.sujet.value,
              message:formObj.message.value},
      type : "post"
    })
    .success(function(data){
      allcourriel = data; // récupération de tous les courriels
    });
 
    progwidth=0; // % de la progression, on commence à 0%
 
    $('.prog-content').width(progwidth+'%'); // progression de la barre
 
    allcourriel = explode('#',allcourriel); // mise en tableau des courriels
 
    $('.prog-content').html('0/' + allcourriel.length); // affichage du nombre de courriels envoyés / total de courriels à envoyer
 
    $.each(allcourriel,function(index,value){ // pour chaque courriel
      $.ajax({ // envoi un courriel à l'utilisateur
        async : false,
        url : "../ajax/sendalertes2.php",
        data : {courriel:value},
        type : "post"
      });
      progwidth = ((index+1)/allcourriel.length)*100; // calcul de la barre de progression (courriel actuel / total) * 100
      $('.prog-content').width(progwidth+'%'); // mise-à-jour de la barre de progression
      prog = index+1; // calcul du courriel en cours
      $('.prog-content').html(prog + '/' + allcourriel.length); // mise-à-jour de l'affichage de la progression (en texte)
    })
 
    $('.prog-content').width('100%'); // Fin de la barre de progression (100%)
    $('.prog-content').html(allcourriel.length + '/' + allcourriel.length); // affichage en texte de la fin de la progression (x / x)
  }
 
  return false;

À noter que tout fonctionne dans mon script, mise à part des 2 affichages pour la progression, soit l'avancement de la barre et l'affichage en texte. Par contre, si je mets un alert(); juste après mes 2 mises-à-jour on voit très bien la progression.

Pourtant, après mon each, avec ou sans alerte dans mon each pour forcer la progression, mon 100% s'affiche très bien.

Comment faire pour forcer l'affichage de ma progression sans passer par une alerte ?

Merci de votre aide.