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