Sto usando l'ajaxQueue citato nell'esempio Queueing something like Ajax Calls:jQuery, Dequeue un ajaxQueue
// jQuery on an empty object, we are going to use this as our queue
var ajaxQueue = $({});
$.ajaxQueue = function(ajaxOpts) {
// Hold the original complete function.
var oldComplete = ajaxOpts.complete;
// Queue our ajax request.
ajaxQueue.queue(function(next) {
// Create a complete callback to fire the next event in the queue.
ajaxOpts.complete = function() {
// Fire the original complete if it was there.
if (oldComplete) {
oldComplete.apply(this, arguments);
}
// Run the next query in the queue.
next();
};
// Run the query.
$.ajax(ajaxOpts);
});
};
Ho anche una funzione per rendere l'Ajax di chiamata e aggiungere il risultato a un div (semplificato):
function ajaxCall() {
$.ajaxQueue({
type: "POST",
url: myURL,
async: true,
cache: false,
success: function(result) {
$('#divID').append($('<div/>').html($(result).html()).fadeIn(200));
}
});
}
Poi su un loop di eventi click io attraverso la chiamata AJAX (semplificato):
$("#btn").on("click", function() {
// (???) Dequeue the ajaxQueue
$('#divID').html(''); // Clear current results
for(var i=0; i<15; i++) {
ajaxCall();
}
});
The Problem
Se un utente fa clic sul collegamento mentre la coda è ancora in esecuzione, viene aggiunta una nuova coda di chiamate Ajax, con conseguente risultato maggiore del previsto. Ho bisogno di cancellare la coda al clic, prima che inizi un nuovo ciclo.
Qui è un jsFiddle Demo. Qualsiasi raccomandazione molto apprezzata.
Quindi, quando l'utente fa clic sul collegamento la seconda volta, cosa dovrebbe succedere ai risultati già recuperati dal primo clic? –
@rahulmaindargi Voglio solo che i risultati siano cancellati (rimossi). –