6
votes

Comment gérer les erreurs de changement de page dans JQuery Mobile

J'écris une application mobile JQuery qui nécessite une authentification de l'utilisateur. Le même utilisateur ne peut pas avoir sa session ouverte à partir de plusieurs emplacements: si l'utilisateur connecte à partir d'un autre navigateur, la session précédente est marquée comme morte.

Si l'utilisateur tente de passer à une autre page avec le navigateur avec la session morte, le message "Page de chargement des erreurs" est affiché. C'est mauvais car l'utilisateur pourrait ne pas savoir pourquoi elle reçoit cette erreur. Est-il possible d'appuyer sur l'événement d'erreur afin que je puisse vérifier l'état de la session et rediriger l'utilisateur à la page de connexion si la session est morte?


0 commentaires

4 Réponses :


0
votes
$(a).click(function(){
    // check for session?
});

1 commentaires

C'est une façon de le résoudre, mais cela pourrait être un peu excessif. Cela (environ) double la quantité de demandes et que la demande est utilisée principalement sur des appareils mobiles, cela pourrait devenir un problème notable.



2
votes

liée:


4 commentaires

C'est une solution un peu meilleure. Cependant, cela se sent toujours un peu trop exclu. Je pensais à faire une fourchette de JQuery Mobile et à ajouter un événement d'erreur souscriptible afin que je puisse gérer l'erreur uniquement lorsqu'elle se produit. Ensuite, une fois encore une optimisation prématurée est dangereuse, alors je vais peut-être rouler avec votre suggestion pour le moment. :)


Cela n'a pas aidé après tout. PageBeForeshow et les événements de bordReforeForfort ne sont pas déclenchés si le chargement de la page échoue.


Ma prochaine suggestion serait d'utiliser Ajax et de vérifier la réponse Apache, exemple: Si vous obtenez une réponse de 200, vous êtes bon, sinon ... peut-être cartographier plus de réponses ainsi que ceci est juste un concept


Ou avez-vous la requête AJAX la page et avoir la fin de la session (comme PHP) valide la session, si elle n'est pas valide, utilisez PHP pour envoyer l'URL souhaitée comme réponse. Exemple: Secure.PHP de requête AJAX, Session de chèques PHP, si la session est bonne revenir Secure.php sinon retour login.php



1
votes

J'ai fini par forking JQuery Mobile et ajoutez une possibilité d'ajouter un gestionnaire d'erreur personnalisé: https: //github.com/jquery/jquery-mobile/pull/2504 Je pense que ce supérieur aux autres suggestions, car il n'ajoute aucun aérien sauf lorsque l'erreur se produit réellement.

Mise à jour: il y aura un nouvel événement PageloadFailed dans JQuery Mobile RC1. Cela résoudra ce problème avec élégance et selon les normes de projet.


0 commentaires

3
votes

Que diriez-vous de l'événement

pagechangefailed


1 commentaires

Oui, ceci est disponible dans les versions récentes. Cependant, j'ai eu ce problème en septembre lorsque cela n'a pas encore été mis en œuvre. Dans ma propre réponse, j'ai décrit l'événement PageloadFailed. Apparemment, PagechangeFailed pourrait suffire également.