2016-08-29 4 views
0

Permettez-moi de donner un sens ...Évitez pause/gel en cas d'erreur javascript jQuery BlockUI

Nous bloquons l'interface utilisateur en utilisant jQuery block UI plugin

$(document).ajaxStart(function() { 
    $.blockUI({ 
    message: '<h4><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> loading...</h4>' 
    }) 
}).ajaxStop($.unblockUI); 

Parfois, lorsque le code lance une erreur:

JSON error on console

le message de chargement sur l'écran freezed ne disparaît pas:

loading message on the freezed screen

La raison en est:

  1. Lorsque le ajaxStart() commence, le $.blockUI() obtient invoquaient.

  2. Et avant que le ajaxStart() puisse terminer l'exécution avec succès, il rencontre une erreur.

  3. ajaxStop() est jamais atteint et l'interface utilisateur est jamais débloquée ($.unblockUI)

Alors, ce que je suis à la recherche est un moyen de montrer un certain message personnalisé quand il y a une erreur entre ajaxStart() et ajaxStop() . Au lieu de code pause/gel sur erreur javascript.

De plus, lorsque j'essaie @Raghav's suggestion, l'écran n'est pas décongelé.

$(document).ajaxStart(function() { 
    $.blockUI({ 
    message: '<h4><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> loading...</h4>' 
    }) 
    throw Error; 
    debugger; 
}).ajaxStop($.unblockUI).ajaxError($.unblockUI); 

Cela n'a-t-il pas de sens?

Répondre

1

Avez-vous essayé des erreurs de manipulation à l'aide ajaxError()

Voir: https://api.jquery.com/ajaxError/

$(document).ajaxError(function() { 
    $.unblockUI(); 
    // Display error message here 
    alert('Some error message'); 
}); 
$(document).ajaxStop(function() {$.unblockUI();}); 
$(document).ajaxStart(function() { 
    $.blockUI({ 
    message: '<h4><i class="fa fa-circle-o-notch fa-spin fa-fw"></i>loading...</h4>' 
    }) 
}); 

Vous pouvez également chercher le message d'erreur. Voir la documentation pour plus de détails.

$(document).ajaxError(function(event, jqxhr, settings, thrownError) { 

    $.unblockUI(); 
    console.log(event, jqxhr, settings, thrownError); 
}); 
+0

Il n'a pas non fige l'écran – xameeramir

+0

'$ .unblockUI' n'est pas un appel de fonction, ne devrait-il pas' .unblockUI $() ' – Soren

+0

@Raghav Toutes mes excuses, l'écran ne bloque pas maintenant. Cependant, je souhaite également afficher un message d'erreur personnalisé. – xameeramir