2010-09-08 2 views
2

Je me suis récemment trouvé dans une situation de 1 à 0 dans une base de données sur un événement de fermeture et j'ai trouvé qu'il n'y avait pas d'événement mais un événement de déchargement. . Maintenant, quand quelqu'un essaie de fermer le navigateur, il devrait être fermé instantanément à cause de l'UE et si je vais avoir une requête AJAX qui va changer un peu de 1 à 0 dans la base de données, il prendrait probablement une seconde ma connexion Internet mais quelqu'un de l'autre côté peut avoir une connexion lente et le navigateur attendra un peu plus longtemps avant de fermer. Ai-je raison? Ou le navigateur sera caché et il portera la demande AJAX en arrière-plan?Est-ce que AJAX fonctionne de cette façon?

Ou si vous pensez qu'une autre solution est disponible, cela vous serait utile.

+0

oh oui certainement – Neutralizer

Répondre

5

Ce n'est pas un moyen fiable de le faire. Il n'est pas garanti que le navigateur fera la demande et cela peut aussi potentiellement nuire à l'expérience de l'utilisateur.

est ici une page avec des détails sur de meilleures façons d'y parvenir:
http://ajaxpatterns.org/Heartbeat

+0

+1 D'accord. De plus, la machine/le navigateur client pourrait se déconnecter du réseau, le navigateur pourrait tomber en panne, etc. – Tadmas

+0

+1 pour le lien merveilleux – Neutralizer

1

Vous pouvez essayer d'ouvrir un dialogue alert() après avoir déclenché l'événement AJAX. Cela garderait le navigateur ouvert jusqu'à ce que l'utilisateur puisse reconnaître l'alerte. Mais à part ça, il n'y a rien que vous puissiez faire pour empêcher le navigateur de s'arrêter avant que l'AJAX ne passe (ou ne se déclenche du tout).

+0

+1 pour penser différemment, j'aimé la façon d'alerte. – Neutralizer

Questions connexes