2009-02-25 7 views
1

J'ai une méthode dans mon contrôleur qui donne un coup de pied d'un travail sur le serveur. Je vais utiliser un appel Ajax (jQuery) pour démarrer ceci via un lien sur la page. Cela peut prendre un certain temps et je dois montrer un certain statut sur la page. Je n'ai pas forcément besoin de "26% fait ..." mais plutôt d'un statut montrant "travail" ou "fait".Afficher l'état du processus en utilisant AJAX et ASP.NET MVC

Comment obtenir un jQuery pour tirer continuellement pour le statut du travail? Ou devrait-il être résolu différemment?

Répondre

1

Vous aurez besoin d'une sorte d'état pour conserver le statut de la tâche à laquelle la tâche et Javascript peuvent accéder. Par exemple, Cache du serveur. Supposons que vous utilisiez une clé de TaskComplete.

Coup d'envoi de votre tâche avec le code Javascript via AJAX

Alors que votre tâche est en cours d'exécution

mises à jour Task Server Cache article

End While

parallèle

Utilisation Javascript pour interroger t il cache pour une valeur

coup votre tâche avec le code Javascript via AJAX

Alors que l'Ajax Réponse Non Tâche terminée

attendre 2 secondes

appel une fonction javascript par ajax à nouveau pour lire la valeur de le cache du serveur article

tâche d'exécution pertinente en fonction de sa valeur

un article que vous m ay trouver utile est ici:

http://msdn.microsoft.com/en-us/magazine/cc163393.aspx

+0

OK. Bon c'est ce que je pensais. Mais comment puis-je faire ce "loop"/"timer" dans jQuery pour continuer à tirer pour le statut? – Riri

+0

Utilisez: setTimeout (votre_callback, timeout_in_ms); – kgiannakakis

+0

Oui, en utilisant setTimeout, je trouve préférable d'utiliser la syntaxe suivante var t = setInterval (function() {// exécute ta fonction ici}, millisecondes); Une fois terminé clearInterval (t); –