Faire patienter le visiteur

cs_Benz Messages postés 196 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 juin 2007 - 22 juil. 2004 à 16:13
Boreux Messages postés 45 Date d'inscription jeudi 31 juillet 2003 Statut Membre Dernière intervention 29 novembre 2010 - 24 nov. 2004 à 12:38
Salut,

J'aimerais savoir si quelqu'un connais le truc (si c'est possible) qui permet d'afficher un message d'attente, non pas pendant que la page est en train de charger dans le navigateur (ca se fait facilement en javascipt), mais pendant que la page ASP est en train de se "compiler" sur le serveur.

J'ai des pages qui sont parfois assez longues à s'afficher parce que le serveur mouline à mort. Il ne se passe rien, et j'aimerais simplement informé l'utilisateur que ca travaille... et que la page arrivera un jour :)

Merci

16 réponses

kkt8 Messages postés 12 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 26 novembre 2008
28 juil. 2004 à 10:38
bonjour,

je n'ai pas de réponse à ton problème par contre tu dis "pendant que la page est en train de charger dans le navigateur (ca se fait facilement en javascipt)" euh ... ça m'interesse j'y arrive pas, comment fais-tu ?

d'avance merci :o)
0
cs_Benz Messages postés 196 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 juin 2007
28 juil. 2004 à 10:50
Salut,

En fait, comme je l'ai dit, ca se fait en javascript (le "facilement" est peut être de trop, ca dépend de la pratique qu'on peut avoir dans les languages... :-) )

Pour la solution, je ne vais pas t'expliquer ici, regarde plutot dans www.javascript.fr ou sur www.editeurjavascript.com avec une recherche comme "faire patienter les visiteurs" tu devrais trouver ton bonheur.

Le principe c'est d'afficher un calque dés que la page commence à s'afficher, contenant un texte d'attente ou un gif animé pour faire patienter le visiteur. Le calque disparait dés que la page est finie de chargée entièrement.
0
kkt8 Messages postés 12 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 26 novembre 2008
28 juil. 2004 à 11:06
merci bocou !
je pense avoir trouver mon bonheur ...
0
cs_Benz Messages postés 196 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 juin 2007
28 juil. 2004 à 11:19
Tout le plaisir est pour moi :)

Quand on peut rendre service...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kkt8 Messages postés 12 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 26 novembre 2008
29 juil. 2004 à 11:47
bonjour !
bon ben ça marche pas chez moi, le texte d'attente et ma page d'affiche en meme temps ...
peut-etre que ça vient de l'archi de mon truc :
j'ai un 1er fichier asp (sans xsl) qui fait un frameset de deux autres fichiers asp, le 1ere (le titre) s'affiche desuite par contre le 2eme qui remplit le reste de ma page, met du temps à s'afficher (gro traitement derrière), si je met le message d'attente sur le 2eme fichier, tout s'affiche en meme temps, j'ai donc essayer d'afficher qqchose sur le fichier ou il ya le frameset, et là si je rajoute un texte, les fichiers appelés dans le frameset ne s'affiche jamais !
comment faire ?

d'avance merci :big)
0
cs_Benz Messages postés 196 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 juin 2007
29 juil. 2004 à 12:03
Je ne sais pas si ca à un intéret de placer ton javascript pour faire patienter dans le framset, mais techniquement ca doit fonctionner étant donné que la page contenant le jeu de cadre est une page html.

Pour ce qui est de ton problème d'affichage simultané de ton message et de tes pages, je crois que ca rejoint ce que je demandais à la base.

Tu me dit qu'il y a un gros traitement sur ta 2ème page.

Il faut nuancer le traitement serveur de ta page et le chargement de celle-ci dans le navigateur.

Dans le premier cas, le code asp est interprété sur le serveur. Celui-ci mouline pendant un certain temps avant de renvoyer le résultat à ton navigateur.

Dans le second cas, la réponse est envoyé à ton navigateur qui charge progressivement toute les données.

Ce n'est que dans le second cas que le script pour faire patienter fonctionne. En effet, dans ton cas comme dans le mien, la page est trés longue à calculer (beaucoup de requètes par exemple ou des boucles d'itérations longues...), mais le résultat est trés léger.

Fait le test autrement et tu comprendras la différence.

Met le script dans une page html (sans aucun traitement asp). Dans cette page, met une image de trés grosse taille (la taille va dépendre de ta connexion Internet. Il faut que celle-ci mette plusieurs secondes à s'afficher. Par exemple avec une connexion modem 56K environ 5 ko / sec, il faut que ton image pése plus de 50 ko. Avec une connexion Free Degroupée à 5Mo, environ 600 Ko / sec, il faut donc que ton image pèse plus de 3 ou 4 Mo).

Met ta page en ligne et test ça. Tu devrais voir le message d'attente s'afficher et disparaitre dés que l'image est complètement chargée.

Malheureusement, je n'ai pas la solution en ce qui concerne l'attente visiteur quand la page s'éxécute sur le serveur... Snifff et ca manque beaucoup.
0
kkt8 Messages postés 12 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 26 novembre 2008
29 juil. 2004 à 13:36
oui effectivement, c'est la page qui est longue à calculer, et non pas à charge ! aaaaaaaaaargh je suis grillée !
par contre, dans le frameset de ma page appelante, je n'arrive pas à ajouter du texte, mon fichier est comme ça :

<script language="JavaScript">
top.Hwnd = window.opener;
ns4 = (document.layers)? true:false
if (ns4) window.onresize = new Function ("window.top.location.reload();");

</script>
</head>

<%
Dim strRef, strFrame, strTask, strXml, strLg, strLabelCreateListRef
Dim sPathFileTrad, ObjTradLib
strLg = Request.QueryString("Lg")
strRef = Request.QueryString("Ref")

strFrame = "<frameset rows='40,*,70' frameborder='NO' border='0' framespacing='0'>"
strFrame = strFrame & "<frame name='titleerror' scrolling='NO' noresize src='/dsmapp/config/catalog/asp/titleincomp.asp' >"
strFrame = strFrame & "<frame name='error' scrolling='YES' src='/dsmapp/config/catalog/asp/ListRefIncomp.asp?Task=" & strTask & "&Lg=" & strLg & "&Ref=" & strRef & "'>"
strFrame = strFrame & "</frameset><noframes></noframes>"

Response.write(strFrame)

%>
</html>

j'ai essayé à plusieurs endroits sans succès, où dois-je ajouter mon texte d'attente ?

encore merci de tes réponses, je suis nulle en techno web !!! :blush)
0
cs_Benz Messages postés 196 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 juin 2007
29 juil. 2004 à 13:50
houla, elle est bien compliqué ta page pour afficher un jeu de cadre. :shock)
N'aurais tu pas intéret à faire un jeu de cadre classique en HTML tout simple ?

Pour placer ton script d'attente, je ne peux pas vraiment te dire, ca dépend de la façon dont il est fait. Il existe plusieurs manière de le mettre en place (certain son à placer tout simplement avant la balise < / body >)

Pour le jeux de cadre en HTML pur, ca donne ca :
Tu pourras mieux te repérer et tu pourras placer ton script plus facilement

<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<frameset cols="80,*" frameborder="NO" border="0" framespacing="0">
  <frame src="page1.asp" name="gauche" scrolling="NO" noresize>
  <frame src="page2.asp" name="main">
</frameset>
<noframes>

</noframes>
</html>



Tu coup, on n'a de solution à notre problème ni l'un ni l'autre et en plus, on est même plus sur le bon forum pour parler de ca. :)
0
kkt8 Messages postés 12 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 26 novembre 2008
29 juil. 2004 à 13:59
euh ... mais si je le met avant , à ce que j'ai compris, le texte ne sera affichée que si le navigateur n'est pas compatible, mais si je met un paragraphe avant le frameset (ex : un
, jsute apres le </head>, là j'ai mon texte mais le chargement de la page s'arrete là, et le frameset n'ets pas chargé ...

t'as pas trouvé de réponse à ton problème du cou ?
;)
0
cs_Benz Messages postés 196 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 juin 2007
29 juil. 2004 à 14:05
Trés juste, tu as raison.

Si tu met un texte juste avant il ne sera lu que par les navigateurs ne comprenant pas les frames (j'avais oublié ce petite détail, ca fait bien lontemps que je ne travaille plus avec les framsets :) )

Si on te demande par exemple de mettre le script avant , c'est qu'il ne peut pas être placé ailleurs. Conclusion, il faut le mettre dans une page qui est chargée dans un des cadres pour que ca fonctionne.

Et, non je n'ai pas encore de solution pour faire patienter le visiteur pendant le traitement des pages. Et à mon avis, c'est pas ici qu'on va nous répondre, vu la longueur du topic actuellement. ;)
0
kkt8 Messages postés 12 Date d'inscription jeudi 26 février 2004 Statut Membre Dernière intervention 26 novembre 2008
29 juil. 2004 à 14:13
bon d'ac ! tanpix
t'as des @ dotres forums ?
en tout cas merci encore pour le cou de main :big)
0
cs_Benz Messages postés 196 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 juin 2007
29 juil. 2004 à 14:20
Pour ce qui est Javascript (forum ou sources), tu peux aller voir sur :

et pour l'ASP tu peux aller faire un tour sur le trés bon ASP-PHP. Sinon y'a aussi un petit forum sympa sur ASPirine

Ca, c'est pour les site que je visite régulièrement. Sinon, il y a d'autres sites Javascript et ASP sympa en français...

Bon dev

PS : si tu as la solution un jour, re poste un message sur ce topic, je ferais de même, se serait sympa. :)
0
cs_Benz Messages postés 196 Date d'inscription jeudi 3 janvier 2002 Statut Membre Dernière intervention 7 juin 2007
29 juil. 2004 à 14:23
y'a eu un problème sur les liens alors je te file les url directement



@ +
0
killergege2 Messages postés 6 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 17 juillet 2005
8 sept. 2004 à 11:11
Bon et apparemment toujours pas de solution pour le sujet de départ !!!

Je suis très interessé si quelqu'un a une solution !!
Un exemple ? Une recherche de trains sur www.voyages-sncf.fr qui affiche une page d'attente puis en charge une autre avec le résultat.
0
Boreux Messages postés 45 Date d'inscription jeudi 31 juillet 2003 Statut Membre Dernière intervention 29 novembre 2010
23 nov. 2004 à 16:55
J'ai ce même besoin, suis donc intéressé s'il y a une solution :)
0
Boreux Messages postés 45 Date d'inscription jeudi 31 juillet 2003 Statut Membre Dernière intervention 29 novembre 2010
24 nov. 2004 à 12:38
J'ai longuement cherché et voilà ma solution. Ca marche dans mon application, mais il faudrait tester pour voir si tous les cas fonctionnent ! Alors ce serait une solution générique...

Mon idée :

Mettre
<!--#include file="WAIT.asp"-->
dans CHAQUE début de page asp.

Fichier WAIT.ASP :
<%

'-----------------------------------------------------------------------------------'
' 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                                                            '
'-----------------------------------------------------------------------------------'
'
'-- 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>
<%
'-- Methode d'arrivee dans la page
' Permet de savoir de quelle maniere on arrive dans cette page (GET / POST)
' --> Dans ce cas, c'etait un GET, donc on redirige tout simplement en utilisant QUERYSTRING
if request.servervariables("REQUEST_METHOD")="GET" then 
%>
<meta http-equiv="Refresh" content="0;URL=http://<%=request.servervariables("SERVER_NAME")%><%=request.servervariables("URL")%><%if request.servervariables("QUERY_STRING") <>"" then%>?<%=request.servervariables("QUERY_STRING")%><%end if%>">
<%
end if
%>
<!--#include file="styles.inc"-->
</head>

<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=1 CLASS="Table" width="250" height="1">
----, Chargement en cours

</td>

<%
'-- Methode d'arrivee dans la page
' Permet de savoir de quelle maniere on arrive dans cette page (GET / POST)
' --> Dans ce cas, c'etait un POST, donc recree le formulaire avant de le reposter
if request.servervariables("REQUEST_METHOD")="POST" then
%>

<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 ""
next
%>
</form>

<script>
<!--
document.WAIT_go.submit();
//-->
</script>
<%
end if
%>

</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
%>
</td></tr></table>
0
Rejoignez-nous