Stopper execution $.ajax() après un clic

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par sff, 5 Mars 2017.

  1. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Bonjour, cela fait un moment que je ne trouve pas la solution. En effet je souhaite pouvoir stopper l'execution d'un script ajax après un clic sur le body.

    Voici le code pour le clic :

    Code:
    $('body').on('click', 'a.close, #fade', function(){
    	 
    	// COMMENT ARRETER LE CODE SUIVANT APRES LE CLIC ??
    })
    Code suivant à stopper après le clic :

    Code:
    $(document).ready(function() {
    
    	$('#wait').fadeIn(500);
    	$('#run').fadeOut(500, function(){
    
    		var counter = 0;
    		
    		var looper = setInterval(function(){
    			
    			$.ajax({
    url: '?mod=ssh_connect',
    timeout: 10000,
    error: function(){
    					response = 'Connection error. Retry please';
    				},
    success: function(data){				
    					counter++;
    					
    					$('#wait').html(counter).fadeIn(500);
    					$('#run').html(data).fadeIn(500);
    					
    					if (counter >= 5)
    					{
    						    clearInterval(looper);
    					}
    				}
    			});
    			
    		}, 10000);
    	});	
    	
    	return false;
    });
    Merci
     
  2. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 875
    J'aime reçus:
    72
    Créer un cookie en JS et conditionner le lancement à la présence ou nom de ce cookie.
     
  3. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    C'est pas très propre cette solution, c'est pas possible comme je le souhaite ?
     
  4. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 875
    J'aime reçus:
    72
    Je vois pas bien ce qu'elle a de pas propre cette solution. Imaginons que l'utilisateur refresh sa page, ta solution n'empêchera pas que le script ajax se relance, la mienne si.
     
  5. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Si l'utilisateur rafraichi sa page, le script d'arrete forcement. Pas besoin d'un cookie
     
  6. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 875
    J'aime reçus:
    72
    Si il recliquee après avoir refresh, ça relance le script. Mais ce n'est peut-être pas grave ?
     
  7. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 875
    J'aime reçus:
    72
  8. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 841
    J'aime reçus:
    249
    Tu lances le clearInterval(looper) dans l'event click.
     
  9. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    J'ai egalement essayé ca il y a une dizaine d'heure. Oui ca fait plus de dix heure que je cherche une solution !

    Mais rien ne fonctionne, j'ai tout essayé. La seule chose qui arrete l'execution du script c'est un alert js et ce n'est pas ce que je veux. Voici le code avec le clearInterval Spoot :

    Code:
    $(document).ready(function() {
    	
    	$('body').on('click', 'a.close, #fade', function(){
    
     clearInterval(looper);
    
    }),
    
    	$('#wait').fadeIn(500);
    	$('#run').fadeOut(500, function(){
    		
    		var looper = setInterval(function(){
    			
    			$.ajax({
    url: '?mod=ssh_connect',
    timeout: 10000,
    error: function(){
    					response = 'Connection error. Retry please';
    				},
    success: function(data){				
    					counter++;
    					
    					$('#wait').html(counter).fadeIn(500);
    					$('#run').html(data).fadeIn(500);
    					
    					if (counter >= 5)
    					{
    						    clearInterval(looper);
    					}
    				}
    			});
    			
    		}, 10000);
    	});	
    	
    	return false;
    });
     
  10. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Dans le script sur le counter >= 5 le setinerval s'arrete. Donc j'ai justement eu l'idée de renseigner counter = 500 après le clic sur le body et comme tout le reste cela ne fonctionne pas

    Voici le code :

    Code:
    $(document).ready(function() {
    	
    	$('#wait').fadeIn(500);
    	$('#run').fadeOut(500, function(){
    
    		var counter = 0;
    		
    		var looper = setInterval(function(){	
    			
    			$.ajax({
    url: '?mod=ssh_connect',
    timeout: 10000,
    error: function(){
    					response = 'Connection error. Retry please';
    				},
    success: function(data){				
    					counter++;
    					
    					$('#wait').html(counter).fadeIn(500);
    					$('#run').html(data).fadeIn(500);
    					
    					if (counter >= 5)
    					{
    						    clearInterval(looper);
    					}
    				}
    			});
    			
    		}, 10000);
    	});	
    	
    $('body').on('click', 'a.close, #fade', function(){
    	
    	counter = 500; // Ne fonctionne pas ! 
    	
    });
    
    });
     
  11. UsagiYojimbo
    UsagiYojimbo WRInaute accro
    Inscrit:
    23 Novembre 2005
    Messages:
    11 875
    J'aime reçus:
    72
    Code:
    $('body').one('click', 'a.close, #fade', function(){
    
    au lieu de

    Code:
    $('body').on('click', 'a.close, #fade', function(){
    
    cf http://api.jquery.com/one/
     
  12. sff
    sff WRInaute impliqué
    Inscrit:
    2 Février 2005
    Messages:
    525
    J'aime reçus:
    0
    Cela ne fonctionne toujours pas. Voici le code :

    Code:
    $(document).ready(function() {
    	
    	$('#wait').fadeIn(500);
    	$('#run').fadeOut(500, function(){
    
    		var counter = 0;
    		
    		var looper = setInterval(function(){	
    			
    			$.ajax({
    url: '?mod=ssh_connect',
    timeout: 10000,
    error: function(){
    					response = 'Connection error. Retry please';
    				},
    success: function(data){				
    					counter++;
    					
    					$('#wait').html(counter).fadeIn(500);
    					$('#run').html(data).fadeIn(500);
    					
    					if (counter >= 5)
    					{
    						    clearInterval(looper);
    					}
    				}
    			});
    			
    		}, 10000);
    	});	
    	
    $('body').one('click', 'a.close, #fade', function(){
       
       counter = 500; // Ne fonctionne pas ! 
       
    });
    
    });
     
  13. gotgot
    gotgot WRInaute discret
    Inscrit:
    1 Octobre 2014
    Messages:
    188
    J'aime reçus:
    0
    ça serait bien d'en savoir plus sur ce que tu veux faire si c'est possible
     
  14. niap
    niap WRInaute discret
    Inscrit:
    17 Octobre 2009
    Messages:
    139
    J'aime reçus:
    0
    Quand tu crée une requête ajax, tu dois avoir un objet en retour, que tu peux arrêter avec abort().
    Une fois ta requete créée, tu ajoute un évenement sur body pour détecter le clic et stopper l'objet.

    En Javascript ça donne une truc comme ça :
    Code:
    function AjaxInit(aMethod, aUrl){
    	var o = new XMLHttpRequest();
    	// tu peux utiliser l'API Fetch si tu veux être moderne : https://developer.mozilla.org/fr/docs/Web/API/Fetch_API
    	o.onreadystatechange = function(){
    		if(o.readyState == 4){
    			// la requete est terminée
    		}
    	}
    	o.open(aMethod, aUrl, true);
    	// tu excecute la requete
    	o.send();
    	// tu renvois l'object XMLHttpRequest
    	return o;
    }
    // la fonction qui stoppe l'exécution
    function AjaxStop(aObj){
    	aObj.abort();
    }
    // initialise l'objet
    var ajaxObj = AjaxInit("GET", "https://www.adressedusite.fr/fichier.php");
    // ajoute un événement clic sur body
    document.body.addEventListener("click", function(){ AjaxStop(ajaxObj); }, false);
    
    Voilà l'idée générale.
     
Chargement...
Similar Threads - Stopper execution ajax() Forum Date
Comment stopper l'exécution de script ajax Développement d'un site Web ou d'une appli mobile 21 Avril 2019
Comment stopper des backlinks non sollicités ? Netlinking, backlinks, liens et redirections 1 Octobre 2015
Doit-on définitivement stopper les inscriptions dans les annuaires ? Référencement Google 24 Avril 2012
Coincidence ? Stopper les adwords = descente aux enfers Référencement Google 24 Février 2012
Stopper un membre d'un forum. Droit du web (juridique, fiscalité...) 27 Janvier 2009
Exécution requête sur bouton sur une ligne tableau Administration d'un site Web 5 Juillet 2017
exécution programme binaire sur des systèmes d'exploitation Débuter en référencement 5 Novembre 2014
"max execution time" et hébergement mutualisé Administration d'un site Web 19 Février 2014
MySQL différence d'exécution Développement d'un site Web ou d'une appli mobile 15 Janvier 2013
Optimiser l'éxécution du JS Développement d'un site Web ou d'une appli mobile 21 Août 2012
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice