Interrompre une boucle de jQuery et AJAX

Fermé
Said_de_lyon Messages postés 18 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 29 août 2015 - 29 août 2015 à 02:13
samyb2313 Messages postés 52 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 15 janvier 2020 - 9 nov. 2015 à 13:00
Bonjour, ( ou bonsoir )

Je voudrais savoir comment interrompre une boucle qui exécute une requête ajax
Voici un exemple de la boucle sous forme d'algorithme simplifié : ( #stop et #defil sont deux bouton , un qui fait arrêter le défilement des données, l'autre qui les fait défiler.)



condition = vrai;

$('#stop').slideDown('slow');

$('#defil').slideUp('slow');


Tant que ( condition ) faire
{
( code de transfert des valeurs des paramèrtres )

requête_ajax(param1,param2,..);

}



funtion requête_ajax(param1,param2,...)
{
$.ajax(
{
type:'POST',

url:'www.monsite.fr/chemin/page.php',

data: {param1:parram1 , param2:param2 , ... },

dataType:'json',

error: function() { affichahe_message('message d\'erreur....'); },

success : function()
{
code à exécuter en cas de succès de la requête ...;
}
});
}


Ceci fonctionne correctement tant que la condition de départ est vrai.
Mais si je veux stopper la bouche ( tant que ) en cours d'exécution, je dois modifier la valeur de la condition et la rendre ainsi fausse. Ce qui interromprais la boucle en cours d'exécution. Ce Que Je recherche.
Pour cela j'ai créer un objet qui sur sur un click rendrais la condition à fausse.
voici un exemple de l'objet ( à peu près dans ma situation problématique ).

$('#stop').bind('click', function()
{
condition = faux;

$('#stop').slideUp('slow');

$('#defil').slideDown('slow');


});
le problème, c'est que la condition ne change que lorsque la bouche ( tant que ) est terminé.
Moi, ce que je veux, c'est que la valeur de la condition change lorsque je je le demande sur un click pour interrompre la boucle ( tant que ) qui exécute une requête AJAX.


Mon Cas réel.
Liste les lignes d'une table d'une base de données à l'aide d'une requête ajax ( pas de rechargement de page ). Ce qui engendre un défilement à assez grande vitesse. ( à peine de quoi distinguer ou en en ai dans le numéro de ligne de la table). Puis de stopper ou de reprendre le lancement du défilement. Ca, ça ne fonctionne pas comme je le veux. Le défilement se fait, mais pas de stop.
Note : La boucle ( tant que ) peut défiler sur des milliers de lignes de données ( en l'occurrence des données de statistiques );

Merci d'avance pour votre aide.
Saïd de Lyon

1 réponse

samyb2313 Messages postés 52 Date d'inscription mercredi 23 février 2011 Statut Membre Dernière intervention 15 janvier 2020 5
9 nov. 2015 à 13:00
Peut etre il serait possible dans ton tant que de tester a chaque tour la valeur d'un bouton ou d'un input.


<button type='button' id='monBouton' value='continue' > STOP </button>



$('#monBouton').click(function() {
$('#monBouton').val('STOP');
});


while ($('#monBouton').val() == 'continue')
{
//ton traitement ou ta requete ajax
}


Dis moi si ça marche.
0