2009-04-02 7 views
1

Au lieu du gif typique "Chargement ..." ou animé, je veux afficher une meilleure description de ce qui se passe. (Un peu comme ce que certains écrans de démarrage font pour les applications). Cependant, jeter un coup d'œil à la documentation de Jquery ne semble pas être un moyen d'obtenir la modification dans l'état XMLHttpRequest.Jquery ajax obtient l'état XMLHttpRequest

Ce que je voudrais faire est quelque chose comme ça

si cas = 1 affichage "Démarrage"

si cas = 2 affichage "Getting Closer"

si cas = 3 affichage « I « m presque là »

si le cas = 4 affichage contenu

suis-je sur quelque chose ou devrais-je abandonner les méthodes ajax jquery de et écrire mon propre?

Répondre

0

Vous devez interroger un service Web à intervalles réguliers et renvoyer tout ce qui semble approprié à votre application (comme les messages que vous avez présentés) et mettre à jour l'indicateur de progression. Le processus est double: la première étape consiste à lancer réellement l'opération qui doit s'exécuter et la seconde étape consiste à interroger constamment le serveur pour voir si l'opération est terminée.

Toutefois, vous devez stocker l'état de fonctionnement actuel sur le serveur. Je ne sais pas avec quelle technologie vous travaillez, donc je peux seulement vous dire d'utiliser quelque chose que votre cadre de choix fournit, mais assurez-vous que l'état du processus est défini dans une variable qui peut être persistante (HTTP est sans état), dans l'exemple d'une variable de session. La synchronisation de cette valeur entre le processus en cours et la méthode d'interrogation peut être difficile.

Dans l'ensemble, ces écrans de démarrage sont plutôt utilisés dans des applications de bureau ou dans des applications Web lorsque le traitement est effectué sur le client. Je ne pense pas que ce soit une bonne idée d'essayer d'avoir une mise à jour lorsque la méthode que vous utilisez est asynchrone sur le serveur. Un indicateur de progression comme celui-ci serait utile lorsque vous chargez des éléments (comme des images ou d'autres fichiers) et que vous pouvez compter les éléments/la taille actuellement chargés par rapport à la taille totale et ainsi de suite. Peu importe si le traitement sera appelé sur le serveur ou sur le client, il doit être dénombrable ...

Si vous ne voulez pas encore un autre indicateur "Loading ..." terne dans votre application web, vous pouvez Afficher au hasard quelques citations amusantes ou d'autres textes d'un tableau.

Meilleure solution: minimisez le temps nécessaire pour traiter la demande. :)

+0

Merci pour le bon conseil. Vous avez abordé quelque chose auquel je n'avais vraiment pas pensé; c'est le temps qu'il faudrait pour interroger et repousser. Merci beaucoup. – Scott

+0

Pas de problème. Je suis content que je puisse aider. En outre, j'ai oublié de mentionner que constamment interroger le serveur consomme aussi des ressources - vous faites beaucoup d'appels «inutiles» pendant que le serveur traite quelque chose. Maintenant, pensez que vous avez autant d'utilisateurs que StackOverflow. :) –