2 appels $.ajax avec jQuery
Bonjour à tous,
Je rencontre actuellement un probleme sur un script ajax devant me permettre d'afficher une barre de chargement lors de l'envoi d'une newsletter à plusieurs abonnés.
Pour résumer, lors du chargement de la page, j'appel un script d'envoi grâce à la fonction $.ajax, qui me retourne succes ou erreur une fois terminé.
En parallèle, et toujours en utilisant la fonction $.ajax, j'appel une page qui retourne l'état de l'envoi en pourcentage. Cette fonction est appelé toutes les secondes par le biais d'un timer.
Code:
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 39 40 41 42 43 44 45 46 47
|
<script type="text/javascript">
<!--
$(document).ready(function() {
// Initialisation de la barre de progression
$("#progressbar").progressbar({
value: 0
});
// Attribution de l'action a effectuer et de l'identifiant du produit concerné
var id_newsletter = '.$_POST['id_envoi_confirm'].';
// Appel du script d'envoi de la newsletter
var appel1 = $.ajax({
type: "POST",
url: "script-envoi.php",
data: "id_newsletter="+id_newsletter,
success: function(retour){
// On affiche la fin de l\'opération
if(retour == "succes"){
$("#message_envoi").slideDown("slow");
}else{
$("#progressbar").progressbar("option", "value", 0);
$("#message_erreur").slideDown("slow");
}
}
});
// Lancement du timer de controle d'envoi
$(document).everyTime(1000, function(i) {
// Appel du script de controle d'envoi de la newsletter
var appel2 = $.ajax({
type: "POST",
url: "script-etat-envoi.php",
data: "controle=controle-envoi",
success: function(pourcentage){
// Mise à jour de la barre de progression
$("#progressbar").progressbar("option", "value", pourcentage);
$("#pourcentage").html(pourcentage);
}
});
});
});
-->
</script> |
Le script d'envoi s'exécute bien et retourne succes. Malheureusement, la barre de progression elle ne s'éxécute qu'une seul fois, une fois le script d'envoi terminé, et passe donc directement à l'état 100%.
Il semble donc que le timer ne se lance pas toute les secondes comme prévu, mais seulement à la fin de l'exécution et du retour du script d'envoi.
Pour information j'utilise le plugin timers de jQuery et jQuery-ui pour la gestion de la barre de progression.
Si vous avez une idée, je suis preneur.
Merci d'avance pour vos conseils.
Samuel