A voir également:
- Récupération contenu html avec XMLHttpRequest
- Editeur html - Télécharger - HTML
- Word a trouvé du contenu illisible - Guide
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
- Contenu multimedia messenger disparu - Forum Facebook Messenger
- Le serveur de récupération n'a pas pu être contacté - Forum MacOS
7 réponses
kryoportail
Messages postés
222
Date d'inscription
dimanche 10 août 2008
Statut
Membre
Dernière intervention
22 mai 2014
125
5 juin 2009 à 11:39
5 juin 2009 à 11:39
Re,
Oui c'est ce que je voulais dire...
cf : https://www.toutjavascript.com/savoir/xmlhttprequest.php3 pour un exemple...
Béh sur le principe ça devrait fonctionner ! Je vais regarder ça !
Je confirme donc que cela fonctionne dans le principe hormis que req.status == 0 chez moi avec firefox !!!! Bref ça, ça marche chez moi :
Amicalement,
S@M...
Oui c'est ce que je voulais dire...
cf : https://www.toutjavascript.com/savoir/xmlhttprequest.php3 pour un exemple...
Béh sur le principe ça devrait fonctionner ! Je vais regarder ça !
Je confirme donc que cela fonctionne dans le principe hormis que req.status == 0 chez moi avec firefox !!!! Bref ça, ça marche chez moi :
<html> <body> <script type="text/javascript"> function GetArticle() { var Ou; var req = null; // Création de l'objet if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); }catch (e) {} } } // Sur changement d'etat req.onreadystatechange = function() { if(req.readyState == 4) { // Pour débug... alert( req.responseText ); Ou = req.responseText; } }; req.open("GET", "article.html" , true); req.send(null); return Ou; } GetArticle(); </script> </body> </html>
Amicalement,
S@M...
kryoportail
Messages postés
222
Date d'inscription
dimanche 10 août 2008
Statut
Membre
Dernière intervention
22 mai 2014
125
5 juin 2009 à 10:47
5 juin 2009 à 10:47
Salut,
Nul part, dans ton code, tu affectes la variable OU ! Il est donc normale que sa valeur soit indéfinie...
Devrait déjà mieux fonctionner... Si j'ai bien compris ce que tu voulais faire !...
Un conseil, si tu utilises Firefox, je te conseille fortement le module Firebug, qui permet de débogger rapidement, et facilement des applications Javascript.
Enfin, si il s'agit d'un développement pour un client ou une entreprise, je te conseille vivement d'utiliser une librairie toute faite pour faire des requêtes asynchrones, comme jquery par exemple...
Bien sur, si c'est juste pour faire des tests et voir comment ça fonctionne, dans ce cas, continue comme ça tu y es presque à mon avis !
Amicalement,
S@M
Nul part, dans ton code, tu affectes la variable OU ! Il est donc normale que sa valeur soit indéfinie...
Ou = req.responseText;
Devrait déjà mieux fonctionner... Si j'ai bien compris ce que tu voulais faire !...
Un conseil, si tu utilises Firefox, je te conseille fortement le module Firebug, qui permet de débogger rapidement, et facilement des applications Javascript.
Enfin, si il s'agit d'un développement pour un client ou une entreprise, je te conseille vivement d'utiliser une librairie toute faite pour faire des requêtes asynchrones, comme jquery par exemple...
Bien sur, si c'est juste pour faire des tests et voir comment ça fonctionne, dans ce cas, continue comme ça tu y es presque à mon avis !
Amicalement,
S@M
Ok merci!
Oui je fais juste des tests à titre personnel, je souhaite ensuite intégrer ça à mon site sous Joomla. Mais pour l'instant je fais des tests en html statique pour me simplifier la tâche.
J'initialisais "Ou" avec:
document.getElementById(Ou).innerHTML=req.responseText;
J'ai donc essayé ta solution, si j'ai bien compris cela donne:
[code]
function GetArticle() {
var Ou;
var req = null;
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
}else if (window.ActiveXObject) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e) {
}
}
}
req.onreadystatechange = function() {
if(req.readyState == 4) {
if(req.status == 200) {
/*document.getElementById(Ou).innerHTML=req.responseText;*/
Ou = req.responseText;
}else{
}
}
};
req.open("GET", "article.html" , true);
req.send(null);
/*Ou = "<div> test article test article </div>";*/
return Ou;
}
/code
J'ai toujours le même résultat "Undefined".
Si je met:
Ou = "<div> test article test article </div>";
à la fin de ma fonction GetArticle(), j'affiche bien "test article test article" donc mon appel à la fonction GetArticle() est bien réalisé.
Peut-être un problème de type de variable? (je ne connais pas grand chose au javascript)
Ou alors le lien vers ma page html n'est pas bien réalisé?
(le fichier article.html est dans le même dossier que ma page d'index: site/article.html et le fichier javascript dans site/js/test.js)
Oui je fais juste des tests à titre personnel, je souhaite ensuite intégrer ça à mon site sous Joomla. Mais pour l'instant je fais des tests en html statique pour me simplifier la tâche.
J'initialisais "Ou" avec:
document.getElementById(Ou).innerHTML=req.responseText;
J'ai donc essayé ta solution, si j'ai bien compris cela donne:
[code]
function GetArticle() {
var Ou;
var req = null;
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
}else if (window.ActiveXObject) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e) {
}
}
}
req.onreadystatechange = function() {
if(req.readyState == 4) {
if(req.status == 200) {
/*document.getElementById(Ou).innerHTML=req.responseText;*/
Ou = req.responseText;
}else{
}
}
};
req.open("GET", "article.html" , true);
req.send(null);
/*Ou = "<div> test article test article </div>";*/
return Ou;
}
/code
J'ai toujours le même résultat "Undefined".
Si je met:
Ou = "<div> test article test article </div>";
à la fin de ma fonction GetArticle(), j'affiche bien "test article test article" donc mon appel à la fonction GetArticle() est bien réalisé.
Peut-être un problème de type de variable? (je ne connais pas grand chose au javascript)
Ou alors le lien vers ma page html n'est pas bien réalisé?
(le fichier article.html est dans le même dossier que ma page d'index: site/article.html et le fichier javascript dans site/js/test.js)
Ah merci! J'ai trouvé une piste grâce à ton alert() de debug.
Donc j'ai bien le contenu de article.html lorsque je met un alert(Ou) dans le if(req.readyState == 4). Par contre j'ai toujours "Undefined" dans le Ou retourné.
J'ai donc essayé de mettre un alert(Ou) juste avant le return de GetArticle(), là alert retourne "Undefined" et le contenu de article.html s'affiche dans ma page index correctement!
Ma question maintenant est: que fait un alert()? Est-ce que cela recharge la variable?
Quelle fonction pourrais-je utiliser pour remplacer alert() par quelquechose qui ne se voit pas?
En gros une fonction qui aurait le même effet que alert (rechargement de la variable "Ou"?) mais qui ne m'affiche pas de message...
Donc j'ai bien le contenu de article.html lorsque je met un alert(Ou) dans le if(req.readyState == 4). Par contre j'ai toujours "Undefined" dans le Ou retourné.
J'ai donc essayé de mettre un alert(Ou) juste avant le return de GetArticle(), là alert retourne "Undefined" et le contenu de article.html s'affiche dans ma page index correctement!
Ma question maintenant est: que fait un alert()? Est-ce que cela recharge la variable?
Quelle fonction pourrais-je utiliser pour remplacer alert() par quelquechose qui ne se voit pas?
En gros une fonction qui aurait le même effet que alert (rechargement de la variable "Ou"?) mais qui ne m'affiche pas de message...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kryoportail
Messages postés
222
Date d'inscription
dimanche 10 août 2008
Statut
Membre
Dernière intervention
22 mai 2014
125
6 juin 2009 à 01:58
6 juin 2009 à 01:58
Re,
Je t'avouerais que j'ai pas tout compris à la question du troisième paragraphe ! Désolé...
Alert() est une fonction javascript permettant simplement d'afficher un message....
Je ne sais pas ce que tu entends par "recharger" une variable...
Pour ce qui est du "undefined" c'est normal si on réfléchit un peu...
la séquence d'exécution de ton code est la suivante :
- Déclaration d'une fonction "GetArticle"
- Création d'un objet XMLRequest
- Déclaration d'une fonction dite de CallBack qui sera exécutée uniquement lorsque la requête aura reçu une réponse.
- Lancement de la requête (via XMLRequest.Send)
- Fin de la fonction "GetArticle" (et retour de la valeur Ou qui n'a pas été affecté, vu que la fonction de CallBack n'a certainement pas encore été exécutée !)
- Exécution de la fonction de CallBack... Et affichage de Ou via alert()...
Ici, on dit que la requête est asynchrone (car javascript va continuer à exécuter le code de ton programme sans attendre la réponse de la requête....
Pour réaliser proprement ce que tu souhaites faire, je te conseillerais de placer le code qui va utiliser la valeur Ou directement dans la fonction de CallBack... Ou de créer une fonction qui va effectuer le traitement sur Ou et de l'appeler lorsque "req.readyState == 4" est executé.... C'est le seul moyen d'être sur que la variable Ou a bien été récupéré !...
Bref un truc comme ca...
En esperant t'avoir dépanné !...
Amicalement,
S@M...
Je t'avouerais que j'ai pas tout compris à la question du troisième paragraphe ! Désolé...
Alert() est une fonction javascript permettant simplement d'afficher un message....
Je ne sais pas ce que tu entends par "recharger" une variable...
Pour ce qui est du "undefined" c'est normal si on réfléchit un peu...
la séquence d'exécution de ton code est la suivante :
- Déclaration d'une fonction "GetArticle"
- Création d'un objet XMLRequest
- Déclaration d'une fonction dite de CallBack qui sera exécutée uniquement lorsque la requête aura reçu une réponse.
- Lancement de la requête (via XMLRequest.Send)
- Fin de la fonction "GetArticle" (et retour de la valeur Ou qui n'a pas été affecté, vu que la fonction de CallBack n'a certainement pas encore été exécutée !)
- Exécution de la fonction de CallBack... Et affichage de Ou via alert()...
Ici, on dit que la requête est asynchrone (car javascript va continuer à exécuter le code de ton programme sans attendre la réponse de la requête....
Pour réaliser proprement ce que tu souhaites faire, je te conseillerais de placer le code qui va utiliser la valeur Ou directement dans la fonction de CallBack... Ou de créer une fonction qui va effectuer le traitement sur Ou et de l'appeler lorsque "req.readyState == 4" est executé.... C'est le seul moyen d'être sur que la variable Ou a bien été récupéré !...
Bref un truc comme ca...
<html> <head> <script type="text/javascript"> // Fonction d'affichage du prix (lorsque cette fonction est appelée, on est sur que l'article a été récupéré !) function DisplayArticle( Article ) { // On fait ce que l'on veut avec Article... par exemple l'afficher via un élément du DOM... document.getElementById('Article').innerHTML = Article; } </script> </head> <body> <div>Votre article est : <span id="Article"></span></div> <script> // Création de l'objet var req = null; if (window.XMLHttpRequest) { req = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } // Sur changement d'etat req.onreadystatechange = function() { if( req.readyState == 4 ) { DisplayArticle( req.responseText ); } }; // Execution de la requète req.open("GET", "article.html" , true); req.send(null); </script> </body> </html>
En esperant t'avoir dépanné !...
Amicalement,
S@M...
Ok! Merci pour ta réponse.
Je viens de comprendre mon problème.
Je pensais que ma variable "Ou" n'était pas initialisée correctement mais en fait elle l'est trop tard.
Je réutilise le résultat de GetArticle dans une autre fonction javascript.
Cette fonction doit donc prendre la valeur de DisplayArticle trop tôt.
En fait j'ai ceci:
Ma fonction createDefaultBoxes() a besoin du résultat de GetArticle. Comment puis-je faire pour être sûr que createDefaultBoxes attende le retour de GetArticle(requête XMLHttpRequest)?
Cela fonctionnerait-il avec un flag mis à 1 en confirmation de retour de la requete et un if testant ce flag comme condition de l'execution de createDefaultBoxes?
Merci!
Laurent
Je viens de comprendre mon problème.
Je pensais que ma variable "Ou" n'était pas initialisée correctement mais en fait elle l'est trop tard.
Je réutilise le résultat de GetArticle dans une autre fonction javascript.
Cette fonction doit donc prendre la valeur de DisplayArticle trop tôt.
En fait j'ai ceci:
function initDragableBoxesScript() { GetArticle(); createDefaultBoxes(); }
Ma fonction createDefaultBoxes() a besoin du résultat de GetArticle. Comment puis-je faire pour être sûr que createDefaultBoxes attende le retour de GetArticle(requête XMLHttpRequest)?
Cela fonctionnerait-il avec un flag mis à 1 en confirmation de retour de la requete et un if testant ce flag comme condition de l'execution de createDefaultBoxes?
Merci!
Laurent