Je ne suis pas sûr que je comprends parfaitement votre question, mais en supposant ajaxloader.gif est l'image de chargement, il ne sera jamais montrer, car il sera immédiatement remplacé par le contenu reçu.
La requête ajax serait elle-même un délai adéquat. Je pense que le déplacement de la ligne <img
à partir du gestionnaire de succès serait suffisant pour voir l'image pour un moment avant le nouveau contenu arrive:
// Show the loading image before firing the ajax request
$('#content').html('<img src="../images/ajaxloader.gif" />');
$.ajax({
url: "<?php echo site_url('apply/processpersonaldetails'); ?>",
type: 'POST',
data: form_data,
success: function(msg) {
// New content replaces the loading image
$('#content').html(msg);
}
});
Si vous voulez toujours un délai supplémentaire avant de montrer le nouveau contenu, vous pouvez utiliser la méthode setTimeout comme ceci:
// Show the loading image before firing the ajax request
$('#content').html('<img src="../images/ajaxloader.gif" />');
$.ajax({
url: "<?php echo site_url('apply/processpersonaldetails'); ?>",
type: 'POST',
data: form_data,
success: function(msg) {
// Insert one second delay before showing new content (not sure why)
window.setTimeout(function() {
// New content replaces the loading image
$('#content').html(msg);
}, 1000);
}
});
Pensez à gérer les erreurs ajax pour vous assurer que l'image se cache également si la requête échoue.
Pouvez-vous être un peu plus précis? Quand avez-vous besoin d'un délai? Entre les appels ajax? Avant de remplacer l'ancien contenu par le nouveau? Ce n'est pas clair à cause de votre question. –
J'ai exactement le même problème, l'icône de chargement ne "s'exécute" qu'après l'exécution ajax finish. – Dryadwoods