2011-07-19 3 views
1

Je travaille sur une application web MVC 3 et suis dans une situation où je devrais informer l'utilisateur du résultat de l'action dans un popup.Faire appel ajax en direct à travers les actions

En ce moment, je fais un appel ajax à l'action lorsque l'utilisateur appuie sur un bouton, si l'utilisateur continue à travailler sur autre chose dans la page, l'ajax sur succès n'est jamais appelé et ne peut pas recevoir le résultat la page.

Quel serait le meilleur moyen de surmonter cela, de sorte que tout ce que l'utilisateur fait dans la page ne gênera pas l'appel ajax et sera toujours en mesure d'afficher le résultat à l'utilisateur.

Modifier

Merci pour les réponses rapides,

Je veux vraiment les utilisateurs de continuer à faire leur travail une fois qu'ils ont frappé le bouton, car il serait une opération de messagerie asynchrone. Une fois l'opération terminée, je veux afficher le résultat dans un div ou utiliser le grognement jQuery, peu importe ce que fait l'utilisateur

Répondre

0

Si l'utilisateur quitte la page pendant qu'il y a un appel AJAX en cours, il n'y a rien que vous puissiez faire pour l'empêcher de l'arrêter. Le mieux que vous pouvez faire est de souscrire à l'événement onbeforeunload et indiquer à l'utilisateur qu'il ya un appel AJAX en cours et que s'il il continue pourrait perdre ses données:

window.onbeforeunload = function() { 
    return 'You are navigating away from the page but there is an ongoing operation that will be interrupted. Are you sure you want to continue?'; 
}; 

Bien sûr, vous initialiser ce gestionnaire seulement avant envoyer une requête AJAX et l'enlever quand cette requête réussit.

0

Vous pouvez essayer d'afficher une superposition transparente pleine taille (ou mieux, semi-transparente) avant l'appel Ajax et la masquer lorsqu'elle se termine.

Cela devrait empêcher les utilisateurs de faire quoi que ce soit jusqu'à ce que l'appel revienne.