Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AFFICHER MESSAGE D'ATTENTE (PAGE EN COURS DE CHARGEMENT) PENDANT LA CONSTRUCTION DE LA PAGE ASP


Information sur la source

Catégorie :Astuces Classé sous : load, loading, wait, attente, chargement Niveau : Débutant Date de création : 24/11/2004 Date de mise à jour : 25/11/2004 09:16:56 Vu : 31 828

Note :
9,13 / 10 - par 8 personnes
9,13 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (27)
Ajouter un commentaire et/ou une note

Description

L'idee est simple :                                                              
  Faire patienter l'utilisateur avec un message d'attente                        
pendant le chargement (parfois assez long) de la page (construction cote server)'
                                                                                  
Principe :                                                                        
  - Savoir de quelle maniere les parametres ont ete poste (GET / POST)            
  - Recuperer les infos postees (FORM / QUERYSTRING)                              
  - Afficher le message d'attente                                                
  - Reposter les infos                                                            

Ajouter <!--#include file="WAIT.asp"--> comme première ligne dans vos pages ASP

Le code du fichier WAIT.asp est ci-joint. Ca marche dans mon application, mais il faudrait tester chez vous pour voir si tous les cas fonctionnent...
 

Source

  • <%
  • '-- Initialisation variable WAIT_refresh
  • ' Permet de savoir si on a deja affiche l'ecran d'attente ou pas (valeur = 1 ou 0)
  • if isempty(session("WAIT_refresh")) OR isnull(session("WAIT_refresh")) then
  • session("WAIT_refresh")="0"
  • end if
  • '-- Si on a pas encore affiche le message d'attente (WAIT_refresh=0) :
  • '
  • ' On l'affiche, on prepare la redirection, et on arrete le traitement de la page en cours,
  • ' et on signale que l'on a deja affiche le message d'attente (WAIT_refresh)
  • if session("WAIT_refresh")="0" then
  • session("WAIT_refresh")="1"
  • %>
  • <html>
  • <head>
  • <title></title>
  • <!--#include file="styles.inc"-->
  • </head>
  • <body>
  • <TABLE BORDER=0 align="center" height="100%">
  • <tr>
  • <td height="100%" valign="middle">
  • <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1 CLASS="Table" width="250" height="1">
  • <TR class="Table_Titre"><td class="Table_Titre">Chargement en cours</td></TR>
  • <TR class="Table_SSTitre"><td class="Table_SSTitre" align="center"><br><img src="await.gif"><br>Veuillez patienter...<br>&nbsp;</td></TR>
  • </table>
  • </td>
  • </tr>
  • </TABLE>
  • <DIV style="visibility:hidden">
  • <form name="WAIT_go" method="post" action="http://<%=request.servervariables("SERVER_NAME")%><%=request.servervariables("PATH_INFO")%><%if request.servervariables("QUERY_STRING") <>"" then%>?<%=request.servervariables("QUERY_STRING")%><%end if%>">
  • <%
  • for each item in request.form
  • response.write "<input type='hidden' name='" & item & "' value='" & request.form(item) & "'>"
  • next
  • %>
  • </form>
  • </div>
  • <script>
  • <!--
  • document.WAIT_go.submit();
  • //-->
  • </script>
  • </body>
  • </html>
  • <%
  • response.end
  • else
  • '
  • '-- Si on a deja affiche le message d'attente (WAIT_refresh=1):
  • '
  • ' On ne fait rien, mais on signale que l'on ne veux plus le message d'attente (WAIT_refresh)
  • '
  • session("WAIT_refresh")="0"
  • end if
  • %>
<%
'-- Initialisation variable WAIT_refresh
' Permet de savoir si on a deja affiche l'ecran d'attente ou pas (valeur = 1 ou 0)
if isempty(session("WAIT_refresh")) OR isnull(session("WAIT_refresh")) then
	session("WAIT_refresh")="0"
end if

'-- Si on a pas encore affiche le message d'attente (WAIT_refresh=0) :
'
' On l'affiche, on prepare la redirection, et on arrete le traitement de la page en cours,
' et on signale que l'on a deja affiche le message d'attente (WAIT_refresh)
if session("WAIT_refresh")="0" then
	session("WAIT_refresh")="1"
	%>
	<html>
	<head>
	<title></title>
	<!--#include file="styles.inc"-->
	</head>
	<body>
	<TABLE BORDER=0 align="center" height="100%">
		<tr>
			<td height="100%" valign="middle">
				<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1 CLASS="Table" width="250" height="1">
					<TR class="Table_Titre"><td class="Table_Titre">Chargement en cours</td></TR>
					<TR class="Table_SSTitre"><td  class="Table_SSTitre" align="center"><br><img src="await.gif"><br>Veuillez patienter...<br>&nbsp;</td></TR>
				</table>
			</td>
		</tr>
	</TABLE>
	<DIV style="visibility:hidden">
		<form name="WAIT_go" method="post" action="http://<%=request.servervariables("SERVER_NAME")%><%=request.servervariables("PATH_INFO")%><%if request.servervariables("QUERY_STRING") <>"" then%>?<%=request.servervariables("QUERY_STRING")%><%end if%>">
			<%
			for each item in request.form
				response.write "<input type='hidden' name='" & item & "' value='" & request.form(item) & "'>"
			next
			%>
		</form>
	</div>
	<script>
	<!--
		document.WAIT_go.submit();
	//-->
	</script>
	</body>
	</html>
	<%
	response.end
else
	'
	'-- Si on a deja affiche le message d'attente (WAIT_refresh=1):
	'
	' On ne fait rien, mais on signale que l'on ne veux plus le message d'attente (WAIT_refresh)
	'
	session("WAIT_refresh")="0"
end if
%>

Historique

25 novembre 2004 09:16:56 :
SImplification du code

Commentaires et avis

signaler à un administrateur
Commentaire de ThunderPsycho le 25/11/2004 11:05:15

Ouai c pas mal et bien commenté, mais il faut vraiment avoir des requêtes ou des opérations lourdes pour avoir des traintements supérieurs à 1 seconde...

Je trouve qu'il est plus intéressant d'avoir un message d'attente sur une page web lors du téléchargement du code et des graphismes, mais c'est mon avis :o)

-> 7/10

signaler à un administrateur
Commentaire de Boreux le 25/11/2004 11:36:49

Benh oui, d'ou ma remarque :

[B]Faire patienter l'utilisateur avec un message d'attente
8pendant le chargement (parfois assez long) de la page (construction cote server)'[/B]

Ici, je suis en Intranet, et c'est utile pour mes applications qui accèdent à de nombreux enregistrements (J'attaque des Bases Oracle)...

signaler à un administrateur
Commentaire de Keneyda le 25/11/2004 13:03:06

Tres bon script,
Pour ThunderPsycho : "Il est effectivement non nécessaire pour les requetes courtes, mais peut etre fortement utilile lorsque la page est composé de multiple tableaux imbriqués qui sont souvent le faites de l'attente des pages..."

Pour Boreux : "Rien a redire... Chapeau..., mise en place tres tres simple..."


Bon prog a tous,

Keneyda

signaler à un administrateur
Commentaire de Boreux le 25/11/2004 15:09:14

Une petite remarque aux programmeurs qui utilisent ce code pour revenir à la page précédente :

<a href="javascript:history.go(-1)">Retour</a>

Ceux-ci devront mettre (-2) pour revenir sur la page précédente... Effectivement, il y a une page intermédiaire maintenant : WAIT.ASP

signaler à un administrateur
Commentaire de ThunderPsycho le 25/11/2004 19:18:04

Ok, ce que je voulais dire c'est que même sur des requêtes multiples et des opérations lourdes sur celles-ci, si ton serveur mets + d'une seconde pour compiler ton code, l'exécuter et générer un résultat,
il y a peut-être du travail à faire au niveau de l'optimisation de ton ou tes serveurs webs, et de tes serveurs de base de données.

Perso je gère un cluster web où sur nos sites à forte charge, le délai de réponse d'un serveur doit être < 1 seconde en pointe afin de ne pas pénaliser la navigation, surtout quand plusieurs fichiers asp sont appelés par page......

Bonne continuation

signaler à un administrateur
Commentaire de Keneyda le 25/11/2004 19:43:20

Je suis d'accord, mais ce code est interessant lorsque la structure meme de la page est lourde (photos, tableau...), j'ai fait le test avec une image de 6 Mo (je sais on ne le fait jamais, mais en local deja cela fonctionne...)

Effectivement si le temps de reponse du serveur est long, il y a du soucis à ce faire par rapport à la structure de l'hebergement, ou de l'optimisation du code...

Bonne prog à tous

Keneyda

signaler à un administrateur
Commentaire de fabrice69 le 26/11/2004 09:56:23 administrateur CS

Pas mal du tout.

Romelard Fabrice.

signaler à un administrateur
Commentaire de Boreux le 27/11/2004 12:52:58

Je suis d'accord avec toi ThunderPsycho mais le web n'est pas fait que pour faire des sites internet, il est utile aussi pour des APPLICATIONS (Internet ou Intranet), et lorsque l'on doit consulter plusieurs centaines de milliers d'enregistrements (ce qui est mon cas) et faire toutes sortes de filtres pour avoir la ou les informations recherchées, ce code est très utile...

signaler à un administrateur
Commentaire de Boreux le 27/11/2004 12:58:55

Enfin, une dernière chose concernant l'optimisation serveurs & bases de données : je travaille dans une grosse société qui traite d'aérospatial. Tout est donc mis en oeuvre pour optimiser réseaux, serveurs, etc (filbre optique, réseau 100Mbits, Serveurs Oracles, ...).

signaler à un administrateur
Commentaire de Benz le 07/01/2005 08:49:47

Merci pour ce code Boreux, ca faisait longtemps que je cherchais comment faire... je sens qu'il va m'être bien utile ;-)

Petite remarque à ThunderPsycho :
Tout comme Boreux, je vais placer ce code sur un intranet composé de pages qui contiennent de nombreuses requètes croisées, etc... et qui intérrogent plusieurs dizaines de milliers d'enregistrements. Alors on a beau optimiser le code, au bout d'un moment, quand la base est énorme, elle est énorme... :-) et on ne peut que prendre son mal en patience pour avoir le résultat.

signaler à un administrateur
Commentaire de larfanou le 02/11/2005 18:14:10

Tout d'abord félicitations à l'auteur de ce code, qui va m'etre bien utile.
Je l'ai testé, il fonctionne nikel, par contre, étant débutant en asp, serait il possible de m'expliquer un peu plus en détails les lignes de codes du fichier wait.asp qui se trouve dans la balise <DIV>... car je ne comprends pas tout et j'aimerais satisfaire ma curiosité.
D'avance merci,
Steff

signaler à un administrateur
Commentaire de boreuxc le 02/11/2005 19:02:20

Tout est dans les commentaires... Qu'est-ce que tu ne comprends pas ?

signaler à un administrateur
Commentaire de boreuxc le 02/11/2005 19:23:33

En bref, admettons que tu viennes d'un formulaire, ou que tu fasses appel à une page avec des paramètres (du style mapage.asp?toto=1&tutu=2), ce qu'il y a dans <DIV> récupère tout ces paramètres (POST ou GET) et les reposte (mais sans afficher la barre de progression cette fois).

Plus clairement : tu fais 2 fois appel à la même page. La première fois, tu affiches un sablier (barre de progression) et tu vas pas plus loin (tu mémorises juste les infos POST et GET et tu reposte la même page). La seconde fois, tu affiches le résultat

signaler à un administrateur
Commentaire de larfanou le 03/11/2005 09:43:17

Merci pour ce complément d'informations. Quand tu dis "tu affiches le résultat", tu parles de la page que l'on a chargée ? (pas wait.asp ?
Dis moi, j'ai posé une autre question sur le forum, voir lien ci-dessous, t'aurais pas une idée ?
http://www.aspfr.com/forum.v2.aspx?ID=592441
Encore merci,
Steff

signaler à un administrateur
Commentaire de boreuxc le 03/11/2005 09:50:59

Oui le résultat de la page que tu as demandé de charger.
Pour la question, je vais lire...

signaler à un administrateur
Commentaire de larfanou le 03/11/2005 10:07:45

Ok, merci...
Sinon, tu peux m'expliquer le bout de code:

For each item in request.form
  response.write "<input......."
Next

Encore merci... je suis un vrai débutant en ASP ;o)

signaler à un administrateur
Commentaire de boreuxc le 03/11/2005 10:16:50

si tu venais d'un formulaire avant de rentrer dans WAIT.asp, cette boucle recrée l'entièreté de tes zones de formulaires (en caché) avant de reposter

signaler à un administrateur
Commentaire de larfanou le 03/11/2005 11:06:32

Ok, j'ai maintenant enfin tout compris... ;o)
Merci bcp pour tes explications et ta patience.

signaler à un administrateur
Commentaire de boreuxc le 03/11/2005 11:20:12

Tu as voté pour mon script ? Si pas merci de le faire...

signaler à un administrateur
Commentaire de larfanou le 03/11/2005 11:32:34

Oui, j'ai mis 10/10 !

signaler à un administrateur
Commentaire de dolten le 11/05/2006 11:48:33

Sous firefox 1.5 ça ne marche pas bien... le code redirige vers la page de destination mais plutôt que le message d'attente, j'ai une page blanche.

des idées?

signaler à un administrateur
Commentaire de laurentwiller le 19/05/2006 13:24:21

Bonjour,

J'ai essaye ce code et il fonctionne seulement dans certains navigateurs.
IE6 = fonctionne
Firefox = ne fonctionne pas et affiche une page blanche
Netscape = le message d'attente clignote

vous avez une idee? Merci.

signaler à un administrateur
Commentaire de Boreux le 22/05/2006 08:57:19

Sorry, je ne développe que sous IE
(je n'y ai pas d'action, mais je développe en intranet, dans ma société, qui ne supporte QUE IE)

Je fais dont part de mes idées de temps en temps, reste à corriger pour les autres browser

signaler à un administrateur
Commentaire de Chrigou le 17/04/2007 08:20:45

Effectivement, je confirme que sous Firefox ça affiche una page blanche. J'ai fait une petite modif et ça à l'air de fonctionner maintenant. Il faut remplacer la partie HTML par celle-ci:
(en fait j'ai mis l'appel du formulaire dans la balise BODY)

<html>
<head>
<title>Please Wait...</title>
</head>
<body onload="document.WAIT_go.submit();">
<TABLE BORDER=0 align="center" height="100%">
    <tr>
        <td height="100%" valign="middle">
            <TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1 Class="Table" width="250" height="1">
                <TR Class="Table_Titre"><td Class="Table_Titre" align="center"><b>Chargement en cours</b></td></TR>
                <TR Class="Table_SSTitre"><td Class="Table_SSTitre" align="center"><br>&nbsp;<br>Veuillez patienter...<br>&nbsp;</td></TR>
            </table>
        </td>
    </tr>
</TABLE>
<div style="visibility:hidden">
    <form name="WAIT_go" method="post" action="http://<%=request.servervariables("SERVER_NAME")%><%=Request.ServerVariables("PATH_INFO")%><%if Request.ServerVariables("QUERY_STRING") <>"" then%>?<%=Request.ServerVariables("QUERY_STRING")%><%end if%>">
<%
    For Each item In Request.Form
        Response.Write "<input type='hidden' name='" & item & "' value='" & Request.Form(item) & "'>"
    Next  %>
    </form>
</div>
</body>
</html>

signaler à un administrateur
Commentaire de chalet_a_biot le 09/05/2007 23:38:19

Bonjour,

Je souhaitais utiliser ce code, à partir de pages PHP.
J'ai fais un test cela ne fonctionne pas.

Est-ce que vous avez une astuce ?
Ou est-ce que vous avez une autre solution ?

Merci d'avance.

signaler à un administrateur
Commentaire de juju 92 le 24/05/2007 17:41:29

Bonjour,

Désolé d'apporter une touche négative à ce concert de louanges (car c'est assez pratique) mais je souhaite vous mettre en garde parce que j'ai passé une journée à résoudre un pb qui venait de l'inclusion du fichier wait.asp....alors si ça peut servir à d'autres pour résoudre le problème.

Mon site (ASP) récupère en POST différentes valeur de formulaire afin de les insérer dans une base de données(classique quoi). Certaines sont de type texte et peuvent contenir des simples quotes. Le traitement classique est de récupérer la valeur avec Request.Form et par exemple de doubler les simples quotes avant insertion en base.

Pour une raison obscure(plus maintenant), l'insertion du fichier wait.asp, me retourne des valeur de champ text incomplètes tronquées avant la simple quote...et là pour trouver, j'aime mieux vous dire que je me suis tellemment arraché de cheveux que Barthez n'a qu'à bien se tenir.

En fait je pense que lorsque les paramètres sont recréés dans wait.asp, la partie de champs situé après les simples quote passent à la trape. J'ai pas eu vraiment le temps de m'attarder sur le problème, un jour viendra....

Bien sûr j'effectue une modification des simples quotes côté client (javascript), mais en cas de désactivation Javascript .....

signaler à un administrateur
Commentaire de Baptiste852 le 30/11/2008 02:21:23

Est-ce possible d'avoir le même code pour PHP ?

Cordialement.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

temps d'attente lors d'un chargement de page! HELP! [ par glopglop ] Salut!!Je voudrait laisser un message de chargement de page à l'utilisateur!!Je m'explique:Page1 l'utilisateur clic sur un lien qui renvoie page 2! Je message d'attente pendant chargement côté serveur [ par bouliz ] Bonjour,Je souhaiterai afficher un message d'attente pendant un traitement qui s'effectue côté serveur.Pour être un peu plus précis, lorsque un client pb chargement active x [ par kmaya ] Mon pb : Ma page asp contient un active x tableau développé sous vb.Sur le load de cette page, j'envoie des parametres à mon active x. Pb : l'active x Actualisation d'une page et chargement dans cache [ par sebhehe ] Je cherche une solution pour que ma page ne se mette pas dans le cache.explication:Je complete une page avec un formulaire qui se trouve sur cette mem stopper le chargement [ par fabiin ] Salut !comment faut t'il faire pour arrêter le chargement d'une page.par exemple ds une condition if, si elle est vrai ben ca n'execute pas la suite d Comment forcer un formview à executer du code behind au chargement (onload) [ par equinoxe83 ] Bonjour à tous,J'ai un gridview dans lequel je sélectionne le nom d'un article.J'affiche la fiche liée de l'article dans un formview.Jusque là, tout v image et evenement LOAD [ par yanis7518 ] Salut a tousj'utilise l'evenement load du control image pour savoir si l'image est chargée ou non. le problème est que meme lorsque le serveur me renv valeur de la date calendar dans la méthode load [ par bousfiha ] bonjour tt le monde.je suis sur une application C# ASP.  sur ma page aspx j'ai un webform calendar. quand je clik sur un jour du calendar, j aimerais evenement qui ne marche qu'une seule fois [ par jimmy28 ] Salut.Dans ma page web, je crée au load une table avec des boutons dynamiquement qui appellent une fonction btn_click().En fait, lorsque je cliques su


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,856 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.