2010-10-05 20 views
0

J'ai une grande page Web (ASP classique) avec beaucoup d'informations requises de l'utilisateur, donc beaucoup d'entrées. Le comportement de l'utilisateur est qu'il va remplir l'information au fil du temps, l'analyser et d'autres processus fastidieux avant de soumettre. Le problème est que même si le délai d'attente de la session est fixé à 30 minutes, souvent je reçois des plaintes que lors de la soumission, l'utilisateur reçoit le message d'expiration et perd tout son travail, tout ce qu'il a rempli avant. Je pensais qu'il serait élégant de vérifier l'événement de soumission si la session est abandonnée, auquel cas un formulaire de connexion apparaît. En utilisant Ajax synchrone, pour la vérification de la session, et pour la connexion elle-même, l'état de la page Web restera inchangé, permettant à l'utilisateur de continuer avec l'envoi après la restauration de la session. Cependant, j'ai lu sur les dangers de synchrones, et comment il est recommandé d'éviter si possible. Pour moi, il semble que c'est un de ces cas où synchrone est nécessaire, mais je n'ai trouvé personne qui a fait cela auparavant. Je cherche des conseils pour savoir si c'est un bon plan d'action, en utilisant Ajax synchrone pour une session de restauration.AJAX synchrone (SJAX) sur la restauration de session

Merci.

Répondre

0

Il n'est pas nécessaire de faire une requête synchrone ici. Vous pouvez annuler la soumission du formulaire (return false ou event.preventDefault() à partir du gestionnaire de soumission), démarrer le XMLHttpRequest asynchrone pour effectuer la vérification, puis dans le gestionnaire de réponse AJAX soit afficher un message ou redémarrer le formulaire de soumission (form.submit()) selon le cas.

Je dirais que 30 minutes n'est probablement pas un délai d'attente de session raisonnable si cela cause ces problèmes. Un délai d'attente plus long et/ou le fait que le formulaire envoie une requête ping au serveur pour maintenir la session en vie, pourrait être une approche plus pratique pour les utilisateurs.