0
votes

Chargeur ne s'affiche pas lors de l'appel Ajax

J'ai une fonction JavaScript qui fait un appel AJAX pour renvoyer certaines données, l'appel est déclenché sur un événement de changement de liste de sélection.

J'ai essayé de nombreuses façons d'afficher mon chargeur tandis que c'est en attente, car il pause actuellement la liste de sélection et ne ressemble pas très bien à un point de vue du client.

Le problème est que j'ai essayé de l'afficher, l'appel Ajax est terminé avant que le chargeur ne montre.

Code actuel: xxx

js fichier xxx

C'est l'une des façons que j'ai Essayé, j'ai également essayé d'appeler une fonction distincte sur l'événement "Onchange", une fonction distincte dans SelectAddress et une autre fonction qui affiche le chargeur puis appelle "SelectAddress", mais rien ne fonctionne, la fonction AJAX est toujours terminée d'abord, puis affiche le chargeur (quand ce n'est plus nécessaire).

Le reste du code fait exactement comme prévu.

merci.


0 commentaires

3 Réponses :


0
votes

Vous pouvez essayer de placer le code Ajax à l'intérieur d'une fonction de sécurité, au cas où le backend fonctionne trop rapidement. XXX


0 commentaires

0
votes

Il s'agit probablement de la plus tard, car vous ne définissez pas le CSS pour masquer une fois le succès / l'erreur est renvoyé. Si vous craignez que le chargeur ne s'affiche pas avant la finition AJAX, vous pouvez définir un délai dans l'appel AJAX à l'aide de la fonction SetTimeout Voici ce que je fais. HTML -

function selectAddress(data) {
openloader();
var selectedAddress = data.value;
var uprn = selectedAddress.split(',')[1];

$.ajax({
    url: '~/collectiondates',
    async: false,
    data: {
        uprn: uprn
    },

    success: function (data) {
        closeloader();
        result = data;
    }
 }
 }

function openloader(){
    $("#overlay-loader").show();
}

function closeloader(){
    $("#overlay-loader").hide();
}


0 commentaires

1
votes

Bonjour, vous devriez utiliser des promesses différées, notamment faites, échouer et toujours avec votre appel AJAX et même un paramètre de sécurité si la demande vérifie l'exemple que j'ai fait dans ce jsfiddle , également ici est un exemple de syntaxe: xxx

espère qu'il aide =)


0 commentaires