Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Proroype.js] Besoin d'une précision pour Ajax.Request

6 réponses
Avatar
Mr Prout !
Hello !

Voilà, j'ai une page perso sur laquelle j'utilise Ajax.Request (de
Prototype) afin d'appeler une page PHP. Cette page PHP permet d'envoyer
un mail avec pièce jointe à 10 adresses email différentes, et quand
l'envoi est terminé, PHP renvoie "ok", valeur que je récupère en
Javascript avec xhr.responseText... Jusque là, tout le monde me suit ? ;-)

Bref, je voulais savoir s'il existait une méthode, si possible avec
Prototype, pour savoir à quel moment un mail était envoyé, puis le
second, etc... En gros je veux faire une barre d'état pour savoir
combien de mails ont été envoyés. Car actuellement, lorsque je lance
l'envoi, on voit la page se charger, et il ne se passe rien d'autre tant
que les 10 mails n'ont pas été envoyés. Ca fait un peu long, surtout
quand la pièce jointe est un peu lourde.

Merci d'avance pour vos lumières !

++

--
http://www.tictacmail.com - Puissant extracteur d'adresses email en
ligne. Filtres de recherche, exportations, options avancées...

6 réponses

Avatar
Olivier Miakinen

Voilà, j'ai une page perso sur laquelle j'utilise Ajax.Request (de
Prototype) afin d'appeler une page PHP. Cette page PHP permet d'envoyer
un mail avec pièce jointe à 10 adresses email différentes, et quand
l'envoi est terminé, PHP renvoie "ok", valeur que je récupère en
Javascript avec xhr.responseText... Jusque là, tout le monde me suit ? ;-)


Oui. ;-)

Bref, je voulais savoir s'il existait une méthode, si possible avec
Prototype, pour savoir à quel moment un mail était envoyé, puis le
second, etc... En gros je veux faire une barre d'état pour savoir
combien de mails ont été envoyés. Car actuellement, lorsque je lance
l'envoi, on voit la page se charger, et il ne se passe rien d'autre tant
que les 10 mails n'ont pas été envoyés. Ca fait un peu long, surtout
quand la pièce jointe est un peu lourde.


Personnellement, je verrais bien un algorithme du genre suivant :
envoyer d'abord le contenu du courriel à une première page PHP, qui
le stockerait dans un fichier ou une base de données sous un nom
donné, mettons mail127063542, et qui retournerait ce nom à l'appelant
JavaScript ; ensuite, envoyer des requêtes en passant comme paramètres
'mail127063542' et la première adresse, puis la seconde, et ainsi de
suit. Tu peux avoir une routine en PHP qui vire de temps en temps les
fichiers trop vieux, mais tu peux avoir aussi une requête de purge.

Donc (je mets une syntaxe du style de celle de GET, mais ce sera plus
vraisemblablement du POST, surtout pour la première requête) :

--------------------------------------------------------------------
afficher "Le transfert commence"

-> REQUEST(stocker_mail.php?mail=..... contenu très long...)
<- RESPONSE = ok, id=mail8730982176

mettre à jour la barre d'état

-> REQUEST(mail_to.php?id=mail8730982176&to=)
<- RESPONSE = ok

mettre à jour la barre d'état

-> REQUEST(mail_to.php?id=mail8730982176&to­)
<- RESPONSE = ok

mettre à jour la barre d'état

...

-> REQUEST(mail_to.php?id=mail8730982176&to=)
<- RESPONSE = ok

mettre à jour la barre d'état

-> REQUEST(purge_mail.php?id=mail8730982176)
<- RESPONSE = ok

afficher "Tout s'est bien passé"
--------------------------------------------------------------------

Avatar
Mr Prout !
Voilà, j'ai une page perso sur laquelle j'utilise Ajax.Request (de
Prototype) afin d'appeler une page PHP. Cette page PHP permet d'envoyer
un mail avec pièce jointe à 10 adresses email différentes, et quand
l'envoi est terminé, PHP renvoie "ok", valeur que je récupère en
Javascript avec xhr.responseText... Jusque là, tout le monde me suit ? ;-)


Oui. ;-)

Bref, je voulais savoir s'il existait une méthode, si possible avec
Prototype, pour savoir à quel moment un mail était envoyé, puis le
second, etc... En gros je veux faire une barre d'état pour savoir
combien de mails ont été envoyés. Car actuellement, lorsque je lance
l'envoi, on voit la page se charger, et il ne se passe rien d'autre tant
que les 10 mails n'ont pas été envoyés. Ca fait un peu long, surtout
quand la pièce jointe est un peu lourde.


Personnellement, je verrais bien un algorithme du genre suivant :
envoyer d'abord le contenu du courriel à une première page PHP, qui
le stockerait dans un fichier ou une base de données sous un nom
donné, mettons mail127063542, et qui retournerait ce nom à l'appelant
JavaScript ; ensuite, envoyer des requêtes en passant comme paramètres
'mail127063542' et la première adresse, puis la seconde, et ainsi de
suit. Tu peux avoir une routine en PHP qui vire de temps en temps les
fichiers trop vieux, mais tu peux avoir aussi une requête de purge.

Donc (je mets une syntaxe du style de celle de GET, mais ce sera plus
vraisemblablement du POST, surtout pour la première requête) :

--------------------------------------------------------------------
afficher "Le transfert commence"

-> REQUEST(stocker_mail.php?mail=..... contenu très long...)
<- RESPONSE = ok, id=mail8730982176

mettre à jour la barre d'état

-> REQUEST(mail_to.php?id=mail8730982176&to=)
<- RESPONSE = ok

mettre à jour la barre d'état

-> REQUEST(mail_to.php?id=mail8730982176&to­)
<- RESPONSE = ok

mettre à jour la barre d'état

...

-> REQUEST(mail_to.php?id=mail8730982176&to=)
<- RESPONSE = ok

mettre à jour la barre d'état

-> REQUEST(purge_mail.php?id=mail8730982176)
<- RESPONSE = ok

afficher "Tout s'est bien passé"
--------------------------------------------------------------------


Salut Olivier,

et merci pour ta réponse. Arff, je t'avoue que j'espérais qu'il existe
une solution native à Prototype (ou au moins à Javascript) pour résoudre
mon problème, mais visiblement non ! :-P

De plus, je ne pense pas que ta solution irait car seule ma page PHP
connait les adresses emails (et non pas la page contenant le Javascript).

En tout cas merci pour ton aide !

--
http://www.tictacmail.com - Puissant extracteur d'adresses email en
ligne. Filtres de recherche, exportations, options avancées...


Avatar
Lionel
Mr Prout ! wrote:
Hello !

Voilà, j'ai une page perso sur laquelle j'utilise Ajax.Request (de
Prototype) afin d'appeler une page PHP. Cette page PHP permet
d'envoyer un mail avec pièce jointe à 10 adresses email différentes,
et quand l'envoi est terminé, PHP renvoie "ok", valeur que je
récupère en Javascript avec xhr.responseText... Jusque là, tout le
monde me suit ? ;-)
Bref, je voulais savoir s'il existait une méthode, si possible avec
Prototype, pour savoir à quel moment un mail était envoyé, puis le
second, etc... En gros je veux faire une barre d'état pour savoir
combien de mails ont été envoyés. Car actuellement, lorsque je lance
l'envoi, on voit la page se charger, et il ne se passe rien d'autre
tant que les 10 mails n'ont pas été envoyés. Ca fait un peu long,
surtout quand la pièce jointe est un peu lourde.


ça se fait en 2 minutes:
1) Ton script php calcule le pourcentage de progression à chaque mail envoyé
et le met en session.
2) tu fais lors de l'appel ajax un Ajax.PeriodicalUpdater qui récupère le
pourcentage en session et actualise la barre de progression toutes les
secondes.

Avatar
Olivier Miakinen

et merci pour ta réponse. Arff, je t'avoue que j'espérais qu'il existe
une solution native à Prototype (ou au moins à Javascript) pour résoudre
mon problème, mais visiblement non ! :-P


Tu ne pourras pas couper au fait d'avoir plusieurs interactions (et donc
plusieurs requêtes) entre JavaScript et PHP. Cela étant, je ne connais
pas Prototype alors je ne peux pas te dire si ce genre de choses a déjà
été développé ou non.

De plus, je ne pense pas que ta solution irait car seule ma page PHP
connait les adresses emails (et non pas la page contenant le Javascript).


L'autre solution à laquelle je pensais est celle indiquée par Lionel.
Le problème que tu soulèves n'existe pas avec cette autre approche.

En tout cas merci pour ton aide !


En retour, ce serait sympa de ne pas garder dans ta réponse l'intégra-
lité de l'article précédent, surtout quand tu n'y réponds pas. Voir
<http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html>, merci
(essentiellement les paragraphes 3a et 3b).

Avatar
Mr Prout !


ça se fait en 2 minutes:
1) Ton script php calcule le pourcentage de progression à chaque mail envoyé
et le met en session.
2) tu fais lors de l'appel ajax un Ajax.PeriodicalUpdater qui récupère le
pourcentage en session et actualise la barre de progression toutes les
secondes.




Ha super, très bonne idée !! :-P
Merci je vais utiliser ce système là ;-)

@ bientôt !

--
http://www.tictacmail.com - Puissant extracteur d'adresses email en
ligne. Filtres de recherche, exportations, options avancées...

Avatar
Mr Prout !

En retour, ce serait sympa de ne pas garder dans ta réponse l'intégra-
lité de l'article précédent, surtout quand tu n'y réponds pas. Voir
<http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html>, merci
(essentiellement les paragraphes 3a et 3b).


OK pas de problème, je ferai plus attention dorénavant ;-)
Merci pour vos réponses !

--
http://www.tictacmail.com - Puissant extracteur d'adresses email en
ligne. Filtres de recherche, exportations, options avancées...