IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Stopper une requête AJAX [AJAX]


Sujet :

jQuery

  1. #1
    Membre confirmé
    Profil pro
    responsable machine à café
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : responsable machine à café

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Par défaut Stopper une requête AJAX
    Bonjour,

    je cherche à stopper d'éventuelles requêtes AJAX avant d'en initier une autre.

    Pour cela, j'utilise :

    Code : 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
     
    	jQuery.xhrPool = [];
    	jQuery.xhrPool.abortAll = function() {
    	    jQuery(this).each(function(idx, jqXHR) {
    	        jqXHR.abort();
    	    });
    	    jQuery.xhrPool.length = 0;
    	};
     
    	jQuery.ajaxSetup({
    	    beforeSend: function(jqXHR) {
    	    		if(jQuery.xhrPool.length > 0){
    	    			jQuery.xhrPool.abortAll();
    	    		}
    	    		jQuery.xhrPool.push(jqXHR);
    	    },
    	    complete: function(jqXHR) {
    	        var index = jQuery.xhrPool.indexOf(jqXHR);
    	        if (index > -1) {
    	            jQuery.xhrPool.splice(index, 1);
    	        }
    	    }
    	});
     
    	function MajListing(test){
     
    		var url="./Includes/Ajax/Toto.php";
    		url=url+"?test="+test;
     
    		var request = jQuery.ajax({
    			type: 'GET',
    			url: url,
    			success: function(result){$('listing').innerHTML = result;}
    		});
     
    	}
    Dans mon code HTML, j'ai 2 liens qui appellent la fonction MajListing('1') ou MajListing('2').
    Mon code fonctionne très bien lorsque je le laisse terminer sa requête.
    Par contre, j'ai des problèmes lorsque je clique rapidement sur les 2 liens :

    Clic 1er lien -> lancement requête 1
    Clic 2ème lien -> dans la console Firebug, je vois bien que la requête 1 est "abort" cependant la seconde requête n'aboutit pas.
    jQuery.xhrPool[0].readyState semble bloqué à 1.
    Je suis obligé de relancer le serveur Apache.

    Auriez-vous une idée pour nettoyer proprement les requêtes avant chaque appel à MajListing ?

    Merci d'avance.

    Config : Firefox 16 + WinXP 64 bits + XAMPP

  2. #2
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    salut,

    des erreurs dans ton code :
    --dans beforeSend, ces lignes sont inutiles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(jQuery.xhrPool.length > 0){
    	jQuery.xhrPool.abortAll();
    }
    car tu coupes tout ce qui est en cours avant chaque nouvel envoi !


    --plutot que de faire ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jQuery.xhrPool.length = 0;
    faut faire ca :

    --et la derniere -> faut pas utiliser ajaxSetup, ce n'est pas recommandé par JQ (Set default values for future Ajax requests. Its use is not recommended.)
    voir ici : http://api.jquery.com/jQuery.ajaxSetup/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème au cours d'une requête Ajax
    Par wajdopovitch dans le forum JSF
    Réponses: 4
    Dernier message: 29/04/2009, 10h13
  2. [AJAX] Traitement de retour d'une requête AJAX
    Par Bootax dans le forum AJAX
    Réponses: 19
    Dernier message: 25/03/2009, 16h07
  3. [AJAX] positionnement dans la page suite à une requête Ajax
    Par Ascella dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/12/2008, 19h10
  4. [Prototype] TinyMCE et autres lib dans une requête ajax
    Par metos256 dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 03/03/2008, 11h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo