Mootools: modifier la réponse

Le
Tr
Bonsoir,

j'utilise mootools pour exécuter une requête xmlhttp asynchrone.
dans le onsucces, je récupère le résultat de cette requête.
je souhaite modifier ce résultat:

la requête appelle un script php qui fait des choses puis calcule le
temps qu'il a mis pour le faire, tout ça construit un bout de page qui
est ensuite envoyé comme réponse, du classique.

pour le moment, lorsque j'affiche le résultat dans la page finale, le
temps d'exécution s'affiche en bas de page, c'est la dernière opération
faite par le script php.

je veux que ce résultat s'affiche en haut de la page (donc en premier
dans la réponse)

je pensais récupérer dans la réponse de la requête, avant de l'afficher
dans la page finale, le contenu du div qui affiche le temps d'exécution
en bas, et le copier dans un div en haut de la page.

malheureusement, et c'est pas faute d'avoir cherché, je ne trouve pas
comment accéder aux éléments de la réponse de la requête.

pourtant, je suis sûr qu'il existe une méthode simple et élégante pour
faire ça
peut-être que je m'y prends très mal
j'espère que quelqu'un pourra m'aiguiller :-)

par avance merci!

--
On est ce qu'on fait, pas ce qu'on dit ni pense être. (Réflexion)
tranquille.xav@gmail.com
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
SAM
Le #24298801
Le 05/03/12 22:29, a écrit :

malheureusement, et c'est pas faute d'avoir cherché, je ne trouve pas
comment accéder aux éléments de la réponse de la requête.

pourtant, je suis sûr qu'il existe une méthode simple et élégante pour
faire ça...



normalement la réponse est un xml
on a alors accès à toutes ses "balises"
il suffit donc de commencer par récupérer la bonne pour l'appendChilder
avant les autres

peut-être que je m'y prends très mal...
j'espère que quelqu'un pourra m'aiguiller :-)



comme tu dis : « tout ça construit un bout de page »
tu obtiens donc un code html à innerHTMLer qque part.

Alorsse, un truc tordu :

on insère/innerHTML le response-text dans un div caché (un div d'1 px)
on peut alors le disséquer pour y déplacer l'élément voulu
en fin de truquage on déplace le div caché à sa bonne place
insertBefore ou appendChild
(et on le resize comme il faut)

ça doit prendre 1/4 de 1/100ème de seconde

par avance merci!





--
Stéphane Moriaux avec/with iMac-intel
Kalowycz
Le #24299001
Le 05/03/2012 22:29, a écrit :
Bonsoir,



Bonjour,

j'utilise mootools pour exécuter une requête xmlhttp asynchrone.
dans le onsucces, je récupère le résultat de cette requête.
je souhaite modifier ce résultat:



Tu récupères du texte (HTML, JSON ou autre), ou bien du XML ?
Parce que le traitement en retour n'est pas du tout le même !

malheureusement, et c'est pas faute d'avoir cherché, je ne trouve pas
comment accéder aux éléments de la réponse de la requête.



Tout dépend justement de la réponse à la question précédente.

par avance merci!



Pas de quoi.

Cdlt,
Kal
Tr
Le #24300061
*Ecrit* *par* *Kalowycz*:
Le 05/03/2012 22:29, a écrit :
Bonsoir,



Bonjour,

j'utilise mootools pour exécuter une requête xmlhttp asynchrone.
dans le onsucces, je récupère le résultat de cette requête.
je souhaite modifier ce résultat:



Tu récupères du texte (HTML, JSON ou autre), ou bien du XML ?
Parce que le traitement en retour n'est pas du tout le même !



pour le moment j'ai deux techniques qui fonctionnent, enfin qui
affichent le résultat (sur onSuccess) dans la page dans un div
'affiche_log':
$('affiche_logs').set('html',responseHTML);
$('affiche_logs').adopt(responseTree);

alert(responseHTML);
me donne le contenu de la réponse
alert(responseTree);
me donne [object NodeList]

avec alert(responseElements);
j'ai [object Object]
et ni adopt ni set n'affichent la réponse

dans onSuccess je n'ai pas la possibilité (je crois) de recevoir du
xml:
onSuccess(responseTree, responseElements, responseHTML,
responseJavaScript)

dans onSuccess(responseText, responseXML)
http://mootools.net/docs/core/Request/Request
alert sur responseText donne [object NodeList] (là tout s'affiche ok
ensuite)
et sur responseXML aussi (là ne s'affiche que les éléments dans les
styles etc)

malheureusement, et c'est pas faute d'avoir cherché, je ne trouve
pas
comment accéder aux éléments de la réponse de la requête.



Tout dépend justement de la réponse à la question précédente.



en fait j'ai donc le choix, ma préférence va bien sûr aux cas où tout
s'affiche bien ensuite (donc exclusion du xml saufe si, en modifiant la
réponse xml, ça modifie aussi la réponse text...
mais là, je n'arrive pas encore à modifier ni même à atteindre quoi que
ce soit...
je vais tester cette technique sur le xml au moins pour continuer à
avancer un peu dans la compréhension du truc:

--
L'important n'est pas de convaincre mais de donner à réfléchir.
(Isidore Katzenberg)

Tr
Le #24300111
*Ecrit* *par* *SAM*:
Le 05/03/12 22:29, a écrit :

malheureusement, et c'est pas faute d'avoir cherché, je ne trouve
pas
comment accéder aux éléments de la réponse de la requête.

pourtant, je suis sûr qu'il existe une méthode simple et élégante
pour
faire ça...



normalement la réponse est un xml



voir mon autre réponse.

on a alors accès à toutes ses "balises"
il suffit donc de commencer par récupérer la bonne pour
l'appendChilder avant les autres

peut-être que je m'y prends très mal...
j'espère que quelqu'un pourra m'aiguiller :-)



comme tu dis : « tout ça construit un bout de page »
tu obtiens donc un code html à innerHTMLer qque part.

Alorsse, un truc tordu :

on insère/innerHTML le response-text dans un div caché (un div d'1
px)
on peut alors le disséquer pour y déplacer l'élément voulu
en fin de truquage on déplace le div caché à sa bonne place
insertBefore ou appendChild
(et on le resize comme il faut)

ça doit prendre 1/4 de 1/100ème de seconde

par avance merci!





le problème c'est que, lorsque la réponse s'affiche dans ma page, et
que je regarde le code source de la page, il n'y a pas cette réponse.
une tentative d'accès sur un div quelconque de la réponse ne donne rien
du tout...

--
Une idée chasse l'autre. (Constat)

Tr
Le #24300101
*Ecrit* *par* **:
*Ecrit* *par* *Kalowycz*:
Le 05/03/2012 22:29, a écrit :
Bonsoir,



Bonjour,

j'utilise mootools pour exécuter une requête xmlhttp asynchrone.
dans le onsucces, je récupère le résultat de cette requête.
je souhaite modifier ce résultat:



Tu récupères du texte (HTML, JSON ou autre), ou bien du XML ?
Parce que le traitement en retour n'est pas du tout le même !



pour le moment j'ai deux techniques qui fonctionnent, enfin qui
affichent le résultat (sur onSuccess) dans la page dans un div
'affiche_log':
$('affiche_logs').set('html',responseHTML);
$('affiche_logs').adopt(responseTree);

alert(responseHTML);
me donne le contenu de la réponse
alert(responseTree);
me donne [object NodeList]

avec alert(responseElements);
j'ai [object Object]
et ni adopt ni set n'affichent la réponse



en fait si, avec adopt, ça m'affiche comme plus bas avec xml...
(tous ces tests, je mélange un peu les pinceaux des fois)

dans onSuccess je n'ai pas la possibilité (je crois) de recevoir du
xml:
onSuccess(responseTree, responseElements, responseHTML,
responseJavaScript)

dans onSuccess(responseText, responseXML)
http://mootools.net/docs/core/Request/Request
alert sur responseText donne [object NodeList] (là tout s'affiche ok
ensuite)
et sur responseXML aussi (là ne s'affiche que les éléments dans les
styles etc)

malheureusement, et c'est pas faute d'avoir cherché, je ne trouve
pas
comment accéder aux éléments de la réponse de la requête.



Tout dépend justement de la réponse à la question précédente.



en fait j'ai donc le choix, ma préférence va bien sûr aux cas où tout
s'affiche bien ensuite (donc exclusion du xml saufe si, en modifiant
la réponse xml, ça modifie aussi la réponse text...
mais là, je n'arrive pas encore à modifier ni même à atteindre quoi
que ce soit...
je vais tester cette technique sur le xml au moins pour continuer à
avancer un peu dans la compréhension du truc:



--
Celui qui veut faire ton bonheur pense d'abord au sien. (Réflexion)

SAM
Le #24300361
Le 06/03/12 18:17, a écrit :
*Ecrit* *par* *SAM*:
Le 05/03/12 22:29, a écrit :

malheureusement, et c'est pas faute d'avoir cherché, je ne trouve pas
comment accéder aux éléments de la réponse de la requête.

pourtant, je suis sûr qu'il existe une méthode simple et élégante pour
faire ça...





normalement la réponse est un xml



voir mon autre réponse.



oui, bon et que donne un alert(onSuccess(responseTree)) ?
ou :
alert(onSuccess(responseTree).getElementsByTagName('*')[0])

alert(onSuccess(responseTree).$$('*')[0])


à mon idée ce "responseTree" doit être un fragment XML




--
Stéphane Moriaux avec/with iMac-intel
SAM
Le #24300421
Le 06/03/12 18:17, a écrit :

le problème c'est que, lorsque la réponse s'affiche dans ma page, et que
je regarde le code source de la page, il n'y a pas cette réponse.



utiliser firebug

ou enregistrer le fichier (modifié) en "page web complète"
puis ouvrir en texte ce nouveau fichier

une tentative d'accès sur un div quelconque de la réponse ne donne rien
du tout...



avec trucMachinTree ?


--
Stéphane Moriaux avec/with iMac-intel
Tr
Le #24300621
*Ecrit* *par* *SAM*:
Le 06/03/12 18:17, a écrit :
*Ecrit* *par* *SAM*:
Le 05/03/12 22:29, a écrit :

malheureusement, et c'est pas faute d'avoir cherché, je ne trouve
pas
comment accéder aux éléments de la réponse de la requête.

pourtant, je suis sûr qu'il existe une méthode simple et élégante
pour
faire ça...





normalement la réponse est un xml



voir mon autre réponse.



oui, bon et que donne un alert(onSuccess(responseTree)) ?
ou :
alert(onSuccess(responseTree).getElementsByTagName('*')[0])

alert(onSuccess(responseTree).$$('*')[0])


à mon idée ce "responseTree" doit être un fragment XML



j'ai essayé ça:
alert(responseTree.item(1));
et j'ai ça:
[object HTMLDivElement]
ça avance je trouve :-)
idées prises ici:

--
Chacun son tour. (Etat d'esprit)

Tr
Le #24300611
*Ecrit* *par* **:
*Ecrit* *par* *SAM*:
Le 06/03/12 18:17, a écrit :
*Ecrit* *par* *SAM*:
Le 05/03/12 22:29, a écrit :

malheureusement, et c'est pas faute d'avoir cherché, je ne
trouve pas
comment accéder aux éléments de la réponse de la requête.

pourtant, je suis sûr qu'il existe une méthode simple et
élégante pour
faire ça...





normalement la réponse est un xml



voir mon autre réponse.



oui, bon et que donne un alert(onSuccess(responseTree)) ?
ou :
alert(onSuccess(responseTree).getElementsByTagName('*')[0])

alert(onSuccess(responseTree).$$('*')[0])


à mon idée ce "responseTree" doit être un fragment XML



j'ai essayé ça:
alert(responseTree.item(1));
et j'ai ça:
[object HTMLDivElement]
ça avance je trouve :-)
idées prises ici:



et avec alert(responseTree.item(1).value); ou .text j'ai undefined
c'est cette partie qui me manque, comment naviguer, chercher et
modifier là-dedans...

--
Nul n'est infaillible! (Vécu)

Tr
Le #24300671
*Ecrit* *par* **:
*Ecrit* *par* **:
*Ecrit* *par* *SAM*:
Le 06/03/12 18:17, a écrit :
*Ecrit* *par* *SAM*:
Le 05/03/12 22:29, a écrit :

malheureusement, et c'est pas faute d'avoir cherché, je ne
trouve pas
comment accéder aux éléments de la réponse de la requête.

pourtant, je suis sûr qu'il existe une méthode simple et
élégante pour
faire ça...





normalement la réponse est un xml



voir mon autre réponse.



oui, bon et que donne un alert(onSuccess(responseTree)) ?
ou :
alert(onSuccess(responseTree).getElementsByTagName('*')[0])

alert(onSuccess(responseTree).$$('*')[0])


à mon idée ce "responseTree" doit être un fragment XML



j'ai essayé ça:
alert(responseTree.item(1));
et j'ai ça:
[object HTMLDivElement]
ça avance je trouve :-)
idées prises ici:



et avec alert(responseTree.item(1).value); ou .text j'ai undefined
c'est cette partie qui me manque, comment naviguer, chercher et
modifier là-dedans...



avec ça:
alert(responseTree.item(1).get('text'));
j'obtiens enfin le contenu du div, yes!
malheureusement, si je mets 2 à la place de 1 j'ai
Uncaught exception: TypeError: 'responseTree.item(2).get' is not a
function
(nav opera dragonfly)

j'ai essayé avec
alert(responseTree.getElementsByTagName('TempsExec'));
(nom du div)
j'ai
Uncaught exception: TypeError: 'responseTree.getElementsByTagName' is
not a function
voilà, je ne sais pas trop ce que je récupère du coup...

--
Croyez en la force de l'exemple. (Vécu)

Publicité
Poster une réponse
Anonyme