2010-08-24 2 views
2

J'ai lu quelques articles ici qui a inspiré ma solution, mais se demander si je suis en train de faire de la bonne façon.attraper perte de connexion ou d'un événement d'authentification perdue en utilisant jQuery

Ce que je l'ai fait était de créer un événement qui attire une erreur ajax jQuery:

$('body').ajaxError(function(xmlHttpRequest, ajaxOptions, error) { 
     if (!locked) CheckUserAuthentication(); 
}); 

Puis le CheckUserAuthentication() passe par un autre appel ajax à un webservice qui tente de vérifier si l'authentification est toujours active. si elle renvoie une valeur dont elle a besoin pour se reconnecter, je demande ensuite une boîte modale qui affiche un formulaire de connexion. Si l'appel ajax échoue, alors il est sûr de supposer que la connexion Internet a été perdue, donc je invite une autre boîte modale qui affiche un message et une boucle js qui vérifie la connexion à nouveau dans les intervalles. Ma première préoccupation est que le code d'événement ci-dessus répète effectivement se déclencher s'il atteint la deuxième erreur ajax, ce qui en fait une boucle répétitive. J'ai donc fait une variable qui définit un booléen à verrouiller l'événement pour empêcher cela.

Mes questions:

1) Suis-je faire correctement?

2) Si oui, puis-je disposer d'une exception ajax pour que je n'aie pas besoin de verrouiller l'événement .ajaxError de re-déclenchement?

3) Y a-t-il d'autres idées plus efficaces que ce que je fais?

J'apprécie toute l'aide!

Répondre

0

J'ai mis en place quelque chose comme ça.

Je configure les options jQuery Ajax pour beforeSend afin de faire une requête ajax pour voir si l'utilisateur est toujours connecté. Si je ne suis pas connecté, j'utilise l'authentification de base HTTP.

HTTP Basic Auth est laid et boiteux, mais a des propriétés de modalité merveilleux dans tous les navigateurs en termes d'arrêter les morts événement Ajax d'origine dans ses pistes pendant que vous essayez de laisser log dans l'utilisateur.

Après HTTP Basic Auth, l'événement Ajax d'origine reprend.


Commander le fichier source javascript, ce qui devrait donner quelques idées: http://bit.ly/g5jUes

Questions connexes