Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2977 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  comment remplacer le contenu d'une div par celui d'un fichier?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment remplacer le contenu d'une div par celui d'un fichier?

n°2114739
tintin34
Posté le 04-12-2011 à 13:17:10  profilanswer
 

Bonjour tout le monde  :hello:  
 
un autre petit soucis me fait défaut depuis quelques temps  :pt1cable: :
 
j'ai ecrit une petite page html de simulation


<HTML>
<HEAD>
  <TITLE>  </TITLE>
  <script language="JavaScript" src="url_varget.js"></script>
  <script language="JavaScript">
 arg = getVar();
  </script>
</HEAD>
 
<BODY leftmargin="0" topmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0" >
           
<div id="conteneur">        
 
     <div id="menu">
          <a href="simul.html?page=males&TITRE=Le Rat des Champs" >choix 1</a>
          <a href="simul.html?page=Femeles&TITRE=la souris et le mulot" >choix2</a>
          <a href="simul.html?page=souris.xml&TITRE=la souris verte">choix3</a><br /><br />
     </div>  
 
     <div id="page">
 <HR>  
             <div id="titre_rubrique"></div>
             <HR>  
             <div id="page_contenu"></div>
 
      </div>
</DIV>
</BODY>
</HTML>


 
suit en fin de fichier le petit script javascript suivant
 


<script type="text/javascript">
<!--
 
document.write(arg['page']);
 
 
//Fonction qui permet d'ecrire dans un élément
var Ecrire = function Ecrire(message)
{
     
 
    if (document.getElementById)
    {
    document.getElementById("titre_rubrique" ).innerHTML = arg['TITRE'];
    document.getElementById("page_contenu" ).innerHTML = message;
    }
  else if (document.all)
    {
    document.all["titre_rubrique"].innerHTML = arg['TITRE'];
    document.all["page_contenu"].innerHTML = message;
    }
}
Ecrire(arg['page']);
//-->
</script>
 


 
qui simule bien ce que je veux faire à savoir suivant le lien choisi la page est rechagée avec 2 paramètres qui modifient le contenu des deux zones définies
 
maintenant je voudrais faciliter la mise à jour à une personne qui saisiera le contenu à afficher dans la deuxieme zone.
 
Je me suis dit que il pourrait mettre à jour des fichiers (comme celui de souris.xml) et qu'au lieu de passer dans le parametre page une chaine, je spécifie un nom de fichier et au script de traduire le nom du fichier par son contenu (sachant que je voudrais eviter du script coté serveur genre php ou autre vue que je suis pas certain que son futur hébergeur le permette)
 
1)je ne sais pas si c'est une bonne idée, qu'en pensez-vous?
2)quel type de fichier j'ai à ma disposition pour faire ca? html? js? xml?..
3)j'ai adapté une fonction trouvée sur le net  
 


//Tableau de mise en cache
var ContenuPage = new Array();
 
//Message d'attente
var MsgChargement ='Veuillez patienter...';
 
 
//Charger le fichier et l'affiche dans un élément
function Charger(fichier)
{
 
     if(ContenuPage[fichier])
 {  
  return ContenuPage[fichier];
 }
 else
 {  
  if(window.XMLHttpRequest) obj = new XMLHttpRequest();  
 
//Pour Firefox, Opera,...
  else if(window.ActiveXObject) obj = new  
 
ActiveXObject("Microsoft.XMLHTTP" ); //Pour Internet Explorer  
  else return(false);
 
  if (obj.overrideMimeType)  
 
obj.overrideMimeType("text/xml" ); //Évite un bug de Safari
   
  var contenu ='';
  obj.onreadystatechange = function()
  {
   if(obj.readyState == 1)
    return MsgChargement;
   if(obj.readyState == 2)
    return MsgChargement;
   if(obj.readyState == 3)
    return MsgChargement;
   if(obj.readyState == 4)
   {
    if(obj.status == 200)
    {
     contenu = obj.responseText;
     ContenuPage[fichier] = contenu;
    }
    else contenu ="Erreur " + obj.status;
    return contenu;
   }
  };    
   
  obj.open("GET", fichier, true);
  obj.send(null);
 
 }
 
}
var toto = Charger(arg['page']);


 
j'ai donc rajouté ce code en fin de script et modifier l'appel à Ecrire par
 
Ecrire(toto);
 
et le resultat c'est que ca fonctionne plus
 
donc si quelqu'une voit d'où viendrait le soucis ou ait des idées pour faire autrement ou plus simple j'écoute tous vos conseils et vous en remercie d'avance
 :jap:  
 
PS: mon fichier souris.xml contient juste une phrase, cela pourrait il etre la source du PB, le fichier devant respecter une structure précise?

mood
Publicité
Posté le 04-12-2011 à 13:17:10  profilanswer
 

n°2114781
tintin34
Posté le 05-12-2011 à 00:39:18  profilanswer
 

Re moi
 
je m'arrache les cheveux avec ce truc, mais j'ai peut-etre une piste
dites mois si vous pensez que c'est à creuser et comment je peux faire les tests
 
En fait voila j'ai mis tous mes petits fichiers dans un dossier sur le bureau et je double clic sur simul.html pour que ca lance le navigateur en local dans ce dossier
 
et je viens de lire sans trop comprendre comment interpreter cette remarque que le httprequest n'est possible que dans un même domaine et que par voie de conscequence la facon dont je transmets le nom du fichier puisse etre un soucis depuis mon bureau et que le probleme n'existerait plus une fois chez un hebergeur
 
Si c'est ca c'est agassant moi je voudrais mettre au point le code en faisant les tests directement sur mon ordi avant de mettre chez l'hebergeur
 
quelqu'un a une idée a me suggérer pour que la transmission du nom de fichier se fasse correctement?
 
(par ailleur je precise que le navigateur précise une erreur acces refusé à la ligne open)

n°2114831
tintin34
Posté le 05-12-2011 à 11:15:37  profilanswer
 

Quelqu'un sait il me dire comment je dois ecrire le fichier et/ou l'url dans la methode open
 
pour qu'il comprenne bien que lorsque je lance le fichier chez moi en local je suis bien dans le même domaine?

n°2114861
tintin34
Posté le 05-12-2011 à 13:31:27  profilanswer
 

A moins qu'il existe une solution liée a un soucis de version de navigateur ou de ses options?

n°2114922
olivthill
Posté le 05-12-2011 à 15:19:17  profilanswer
 

Le problème n'est pas clair (pour moi).
 
Il y a deux situations différentes :
 
- Si le fichier se trouve sur le poste de l'utilisateur, alors il n'est théoriquement pas possible de le charger automatiquement (pour de soi-disantes raisons de sécurité). Il est possible de permettre à l'utilisateur de transférer le fichier vers un serveur en lui donnant un champ <input type=file...> qui contient un bouton "parcourir".
 
- Si le fichier se trouve sur le serveur, alors il est possible de l'inclure dans une page générée dynamiquement. Mais il faut utiliser un langage pour le serveur (PHP ou Java), et non pas un langage pour le poste de l'utilisateur (Javascript).
 
Si la page HTML contient une ligne javascript qui fait un XMLHttpRequest(), c'est une technique que l'on nomme habituellement "Ajax". Cela permet de faire une requête au serveur sans passer par une soumission d'un formulaire (submit a form). Cela ne me parait pas forcément utile dans le cas présent. En tous cas, cette méthode nécessite, non seulement la partie requête (l'appel à XMLHttpRequest()), mais aussi une partie de code du côté du serveur laquelle doit être écrite en un langage pour serveurs (PHP ou Java).


Message édité par olivthill le 05-12-2011 à 15:19:50
n°2115644
tintin34
Posté le 08-12-2011 à 22:04:49  profilanswer
 

Merci olivthill pour ces éléments de réponses
 
je vais essayer d'apporter des précisions:
 
1) pour le moment tous les fichiers , sont ni sur un serveur ni chez le demandeur du site en question, et le seul utilisateur, c'est encore moi qui met au point l'affaire, avec quelques fichiers de tests pas trop compliqués pour effectuer des simulations pour une futur maquette
 
2) j'ai décidé car je veux modifier des div via le innerHtml (aussi pour me servir de cette etude de cas pour manipuler de l'ajax) d'investiguer la maquette sur de l'AJAX et d'autre part sur des fichiers XML même si je pense que la portabilité de la demande ne l'impose pas
 
3) j'ai décidé aussi d'une part à la demande du "demandeur" de ne faire qu'une page visible avec des zones css et div qui changent en rapport de clic sur des liens présents eux aussi sur la dite page et par ailleurs et ceci est mon choix les liens auront donc un shéma du style
 

<a href="page_unique.html?page=nom_d_un_fichier_source.xxx&TITRE=type_de_la_rubrique_du lien">choix_x</a>


 
ensuite mon script javascript et la fonction Ecrire se charge (suivant navigateur)
de modifier l'affichage:

  • de la div devant afficher la rubrique du menu dans laquelle etait le lien cliqué => c'est le parametre TITRE passé dans l'url
  • de la div devant afficher l'information associée au lien cliqué => c'est le parametre page avec nom de fichier contenant l'info sous XML


4) pour l'instant le demandeur n'a pas règlé le problème de l'hébergeur futur et donc je ne peux présumer même si il a été briffé sur le sujet que le choix se porte sur une solution disposant d'un langage coté serveur voir même d'une possibilité de base de donnée (pour mon propre compte j'anime un site également et mon choix s'est porté sur 1&1 qui offre un nom de domaine réservé à ma convenance, du php et une possibilité de base de donnée mysql)
 
5) le demandeur n'y calcule rien à l'informatique si ce n'est qu'il a comme beaucoup subi, un jour un effet marketing l'inscitant a se procurer un ordinateur, qu'il ne l'utilise qu'occasionnelement pour quelques mails, du youtube un peu de google (et encore) et 3 documents et six griffes de hamster volant, de document office car il a entendu que c'etait gratuit, sans compter une bonne culture de virus, et d'un coup d'un seul il a decouvert que ca pouvait devenir un vecteur pour lui d'expression.
 
Fort de ca, je voudrais au maximum ne pas le sortir de sa bulle fantasmagorique et lui épargner au maximum du texte balisé qui pour lui est du dialecte cino-sénégalais (ni voyez aucune "loucheté" sectaire ou autre dans ce dernier propos, c'est juste une expression ;)); par ailleurs de maniere plus directe je veux pas non plus recevoir un mail ou autre et ensuite c'est bibi qui s'adapte. Je veux juste lui fournir du mecanisme qui tient la route, plus quelques notions (il sort pas non plus des fonds abyssals du ruisseau local), une petite doc et hop! apres il se débrouille avec son jouet (bien sûr si de nouvelles contraintes ou améliorations techniques sont nécéssaires, je sortirai mon déguisement de spiderman, mais je veux pas, vous m'aurez compris, jouer avec "son jouet" )
 
6) fort de ce constat, la plus grosse question pour moi c'est de savoir (sans savoir ce qu'il veut vraiememnt faire de ce nouveau jouet) comment je peux le laisser dans son jargon quotidien, et que ce soit bien lui qui annime son truc et le mette à jour sans trop que je sois derriere tel le surveillant général. Et là, je découvre, que le XML a ete inventé (enfin je le savais un peu avant, mais là c'est une bonne carotte pour faire comme si ;) ) pour universaliser le transport de l'information. Je me dis donc:

  • ca parait une bonne idée dans cette affaire
  • voila une bonne grosse carotte pour avoir envie de traverser la rive et y pratiquer d'avantage sur l'affaire


Le tout réuni donne les premiers début de code ci au-dessus; moyennant quelques corrections minimes (genre déplacement d'une instruction ou autre) je décide fort des indications trouvées sur le net et mon intuition, disant que le XMLHttpRequest fonctionnait que sous un meme domaine (au sens DNS ;) ), je décide de placer mon code sur une zone retranchée de mon serveur 1&1 et de suite, le code se met à faire exactement ce que je souhaitais (sauf que jusqu'alors j'utilisais ResponseText, pour récupérer le contenu sur le serveur a mettre dans la div)
 
Question 1ere: existe t'il une facon d'ecrire le code pour qu'indiférement que je sois sur mon ordi entierement en local ou que je place les fichiers sur un serveur hébergeur, je puisse faire les tests (je veux pas installer en local sur mon poste un serveur apache ou IIS :( )? j'ai cru voir que oui mais j'ai pas tout impacté le code alors proposé :(
 
 
 
 
Depuis, j'ai défini une nomenclature pour l'information suivant le standard XML (j'ai pas mis au debut du fichier l'instance <?xml... mais j'ai cru lire que c'etait optionnel)
 
et maintenant j'essaie par rapport à cet extrait de code sachant que le reste en amont semble conforme à ce qu'il faut faire vis à vis d'ajax, de récupérer les valeurs afin de créer une chaine de caractère qui commencerait par '<blocknote>....' + une valeur trouvée par le tag et le childeNode ....
 
et retourner la chaine de caractère finale "<blocknote>....</blocknote>" afin que ma fonction Ecrire la mette dans la bonne div via innerHTML
 

var xmldoc = httpRequest.responseXML;
var root_node = xmldoc.getElementsByTagName('root').item(0);
alert(root_node.firstChild.data);


 
je veux pas d'alert moi et je ne comprends pas pourquoi si je place entre deux +
 
xmldoc.getElementsByTagName('id_de_ma_div_en_cours')[0].childNodes[0].nodeValue
 
cela me provoque une erreure
 
Question seconde:est ce que je dois chercher vers des pistes:

  • qu'il faille passer par des variables locales javascript pour récupérer chaque élément du retour xml de ma requete avant de pouvoir reconstruire une chaine Html avec


ou
 

  • ou plutot que je me retrouve avec 3 fonctions (Ecrire, Charger et tradxml_doc) qui ne sont pas forcement dans le bon niveau vis à vis du Open de l'HttpRequest


En tout cas j'aimerais bien arriver à récuprérer le contenu de la première sous balise de mon fichier XML test et l'afficher dans la zone prévue en ayant juste envoyé page="souris.xml" dans l'url ca fonctionne avec des des reponses plein texte donc l'espoir est permi avec des reponses xml, non?
 
Question 3: pour ne pas trop modifier mon fichier test, j'ais pas réussi a trouver la facon  de tester si je devais utiliser responseText ou responseXML? c'est peut etre pas posssible?


Message édité par tintin34 le 08-12-2011 à 23:13:46
n°2115700
olivthill
Posté le 09-12-2011 à 10:38:44  profilanswer
 

"2) [...] AJAX [...]
4) pour l'instant le demandeur n'a pas règlé le problème de l'hébergeur futur et donc je ne peux présumer [...] que le choix se porte sur une solution disposant d'un langage coté serveur"

 
Pour Ajax, il est nécessaire, obligatoire, required, mandatory, compulsory, necesario, notwendig, erforderlich, нужно, необходимо, d'avoir un bout de code sur le serveur. Et de nos jours, 95% des hébergeurs permettent de faire du PHP. Donc, il n'y a pas à hésiter, il faut écrire quelques lignes en PHP (une seule ligne suffit dans les cas simples, voir l'exemple de wikipedia).
 
Voir :
 
- http://fr.wikipedia.org/wiki/Ajax_(informatique)
- http://www.xul.fr/xml-ajax.html
- http://gael-donat.developpez.com/web/intro-ajax/

n°2115732
Riokmij
Blink and you're dead
Posté le 09-12-2011 à 11:35:58  profilanswer
 

olivthill a écrit :


 
Pour Ajax, il est nécessaire, obligatoire, required, mandatory, compulsory, necesario, notwendig, erforderlich, нужно, необходимо, d'avoir un bout de code sur le serveur.


 
Non, absolument pas. Une requête ajax peut être faite vers un fichier statique, ça ne change pas grand chose pour ce qu'on en fait sur la page.
 
Si j'ai bien compris le problème :
- le client fournit ses contenus dans des fichiers xml statiques
- la page va charger un de ces fichiers en fonctions des paramètres donnés sur l'url
- on affiche le titre et le contenu dans des tags qui existent déjà
 
Déjà, premier point : ne t'embête pas avec XMLHttpRequest et autres, passe par une bibliothèque qui gère pour toi les aspects cross-browser (jquery par exemple), ça allège considérablement le code et ça permet d'éviter bien des problèmes.
 
Ce que tu peux utiliser (c'est du jquery):
 

Code :
  1. <script>
  2. function ChargerXML(file) {
  3.     $.get(file, {}, function(xml) {
  4.         // ici, on a le document XML dans la variable "xml"
  5.        
  6.         // exemple de ce qu'on peut faire
  7.         var texte = xml.getElementsByTagName("contenu" )[0].textContent
  8.         $("#contenu" ).html(texte)
  9.     })
  10. }
  11. </script>
  12. <div id="contenu"></div>


 
Pour "file", tu peux donner une url complète en paramètre, ou simplement donner un chemin relatif. L'avantage du chemin relatif : ça marche en local, si tu as ton fichier xml dans le même répertoire que ton html, on va pouvoir le charger.

n°2115778
olivthill
Posté le 09-12-2011 à 14:23:19  profilanswer
 

Riokmij a écrit :

Non, absolument pas. Une requête ajax peut être faite vers un fichier statique

Je ne savais pas, mais ça m'intéresse. Auriez-vous un exemple ?
 

n°2115853
tintin34
Posté le 09-12-2011 à 21:07:50  profilanswer
 

ben merci a vous deux pour ces éléments
 
JQuery je découvre dans un autre contexte (mon propre site et ca répond bien a faciliter un truc que je voulais faire (voir un autre sujet pas loin en dessous))
 
Riokmij a bien résumé ce qu'on me demande, moi ce que je veux c'est que le demandeur et donc aussi l'animateur soit dans un contexte assez facile pour remplire son fichier XML statique voir encore mieux un truc du genre il tappe tout son contenu dans un open office local et ca me transforme le truc en un xml statique structuré comme moi ca me convient je récupère sur l'hébergeur le dit xml que je peux meme attacher a la page html de ce que j'ai compris pour plus avoir à la redemander en cas de besoin et ensuite mon javascript ou autre détricotte le truc pour dispatcher dans des tags figés ca lui irra parfait
 
voir si je trouve rien qui sache me transformer un .doc ou un open office en mon format xml ou si c'est trop prise de tête c'est pas bien compliqué à ce stade de lui faire en plus une petite page avec quelques input pour qu'il tappe son cirque et ensuite je lui colle un petit javascript qui construit le XML, en lui disant qu'il procède comme ca et ensuite il fait son ftp et il envoie le xml chez l'hébegeur et hop
 
apres j'ai pas tout compris du script incluant le jquery, finalement on utilise toujours:
 
getElementsByTagName("contenu" )[0]. la fin change un peu par rapport a ce que j'avais de assez simple semble t'il faire qqch du meme style avec un peu d'ajax mais en fait le soucis auquel je me suis heurté et je pense que j'ai une tendence de réponse c'est qu'en fait je peux pas directement manipuler "getElementsByTagName("contenu" )[0]...." genre faire un document.write de ce truc
 
je semble lire entre les lignes de ce que j'ai lu et de vos réponses c'est qu'il faut en fait que je déclare une variable locale purement javascript qui peut alors recevoir la valeur qu'il y a dans ce truc et apres j'en fais ce que je veux (j'ai eu un coup comme ca une fois avec du PHP) et je pre- sens que il y a une subtilité du meme genre bon je vai creuser vers ces nouvelles pistes jquery ...

mood
Publicité
Posté le 09-12-2011 à 21:07:50  profilanswer
 

n°2116238
tintin34
Posté le 12-12-2011 à 15:24:56  profilanswer
 

euh Riokmij
 
j'arrive pas trop à intégrer ton script dans le mien. Dans mon esprit d'origine, il y avait dans le mien:
 
0) en préambule , j'ai un script chargé dans le header de la page unique d'accueil avec une fonction getVar() qui elle lie le contenue de l'url de chargement de la page et décompose et récupère la partie après le ?
 
qui contient page= le nom d'un fichier avec l'extension xml
suivi de &
suivi de TITRE= une chaine de caractère
 
et place les deux informations dans une "variable globale" de nom arg qui est un tableau  à deux éléments (indicé par TITRE et page)
 
1) une fonction Ecrire qui prend en argument une chaine de caractères construite de telle sorte que ce soit de l' HTML  
 
et qui le place dans la div d'id toto et au passage elle modifie aussi le contenu de la div d'ID titi
 
2) du fait que je souhaite mettre dans arg['page'] un nom de fichier avec l'extension xml, il me fallait donc une autre fonction Charger (ou chargerXML que tu proposes en fonction annexe ou non)
 
qui prend en argument le nom d'un fichier sous forme d'une "chaine" et ajax ou jquery
 
me retourne une chaine (en fait de portion de code HTML) que Ecrire se chargera de placer dans la bonne div suivant le nagateur
 
3) en fin de script je ferais donc appel à ces deux fonctions par l'instruction:
Ecrire(Charger(arg['page'])); et dans la page html on trouve un lien hypertext:
<A HREF="page_accueil.html?page='info.xml'&TITRE='le titre de cettepage est test' ">choix n°1</A>[/i]
 
AJAX ou Non que doit faire ma fonction Charger?:
 
elle doit prendre le nom du fichier xml (ou un txt qui a une portion de code html) en argument
Ouvrir le fichier supposont du xml suivant une structure que j'ai définie
me construire une chaine (conforme à du html) genre un truc qui commence <blocknote> et qui fini par </blocknote> avec à l'interrieur un détricottage et interprétation du dit fichier xml balisé correctement avec des sous div etc...
 
je pense avoir compris comment en ajax on utilise les childnode .value... à l'exception que je ne comprends pas trop si la manipulation des méthodes en question de mettre le résultat dans une variable javascript locale (car on ne pourrait pas manipuler directement les childnod ..value) ou si les erreures que je rencontre (dans le cas de l'AJAX) sont liées à des niveaux d'imbrications et de portabilités des fonctions
 
si c'est du jQuery comme tu me le suggère Riokmij, où dans ton code se trouve la chaine que j'ai besoin? je suppose que je peux pas mettre  
return $("#titre" ).html(texte); en fin de fonction ChargerXML, peut-être html(texte)?
 
en tout cas j'aimerais y voir plus clair dans tout ca meme si on en reste en AJAX
 
:hello:

n°2116661
tintin34
Posté le 14-12-2011 à 17:22:02  profilanswer
 

je reviens vers vous tous car j'arrive toujours pas à avoir autre chose que null dans ma div sous IE7 et rien pour les autres au lieux d'une valeur de type chaine  
 
quand j'utilise responseText et que le fichier dans le lienest ecrit en html ca va
quand j'utilise responseXML plus rien
 
 
mon fichier souris.xml est en résumé ainsi

Code :
  1. <?xml version="1.0"?>
  2. <Article>
  3. <num>1</num>
  4. <titre>le rat des villes et le rat des champs</titre>
  5.              <txt>Autrefois le rat des villes<BR>
  6.                     Invita le rat des champs,<BR>
  7.                     D'une façon fort civile, <BR>
  8.                     A des reliefs d'ortolans.<BR>
  9.                     ...<BR>
  10.              </txt>
  11. </Article>


 
et dans mon javascript apres le changement d'etat de la requete a 4 et code 200 je fais ces instructions:
 

Code :
  1. var contenu = '<blocknote>';
  2. var docxml = obj.responseXML;
  3. var titre = docxml.getElementsByTagName("titre" );
  4. contenu += titre.childNodes[0].nodeValue + '</blocknote>';


 
quesqui ne va pas dans cette syntaxe? pourquoi contenu n'a pas la chaine => le rat des villes et le Rat...
 
j'ai pas mis de namespace en début de index.html, vu que c'etait pas obligatoire et que je devrais pas en avoir trop l'utilité, ca peut etre ca?
 
J'ai fais plusieurs essais avec data avec item ... au gré de ce que je trouve sur le net pour récupérer la valeur de la balise titre du xml mais rien y fait
 
je remercie d'avance toutes bonnes ames qui aurrait une piste sur ce blocage


Message édité par tintin34 le 14-12-2011 à 17:25:58
n°2117139
tintin34
Posté le 18-12-2011 à 19:25:37  profilanswer
 

personne n'a de piste pour que j'arrive a debuguer ce truc?

n°2117444
tintin34
Posté le 20-12-2011 à 10:41:53  profilanswer
 

je comprends toujours pas pourquoi je n'arrive pas a récupérer la chaine dans un tag <titre></titre> en utilisant getElementbytagname a partir du xml que j'ai donné au post juste au dessus
 
j'ai un peu modifié une fois de plus le script donc je redonne les parties en jeu en espèrant que le quoic puisse etre repèré :heink:
 

Code :
  1. <script type="text/javascript">
  2. ...
  3. ...
  4. function Charger(fichier)
  5. {
  6. var obj = null;
  7. fichier = "http:/..../TEST/" + fichier;
  8. ...
  9.    if(window.XMLHttpRequest) obj = new XMLHttpRequest();
  10.    else if (window.ActiveXObject) obj = new ActiveXObject("Microsoft.XMLHTTP" );
  11.          else return(false);
  12.    if (obj.overrideMimeType) obj.overrideMimeType("text/xml" ); 
  13.    var contenu ='<blocknote>';
  14.    obj.onreadystatechange = function()
  15.         {....
  16.          if(obj.readyState == 4)
  17.      {
  18.   if(obj.status == 200)
  19.      {
  20.                 var docxml = obj.responseXML;
  21.    var titre = docxml.getElementsByTagName("titre" ).value;
  22.    contenu += titre + '</blocknote>';
  23.      }
  24.   else {....};   
  25.                          }
  26.         };
  27.  obj.open("GET", fichier, true);
  28.  obj.send(null);
  29.  return contenu;
  30. };
  31. </script>


 
:jap:


Message édité par tintin34 le 20-12-2011 à 10:46:31
n°2117496
Riokmij
Blink and you're dead
Posté le 20-12-2011 à 13:58:33  profilanswer
 

getElementsByTagName retourne un tableau d'éléments, il faut indiquer lequel tu veux prendre : par exemple, docxml.getElementsByTagName("titre" )[0] pour le premier.

n°2117503
tintin34
Posté le 20-12-2011 à 14:13:22  profilanswer
 

ok je comprends bien dans le xml que j'ai donné il n'y a qu'un tag <titre> pour le moment
 
donc c'est 0 pour l'indice  
ca donne la ligne 23)

Code :
  1. var titre = docxml.getElementsByTagName("titre" )[0].value;


 
mais si je fais ca, IE me sort une erreur objet requis et j'arrive toujours pas a taper dans le contenu entre les deux tag titre
 
j'en perds le latin il doit falloir un petit truc de rien du tout en plus???
 
PS c'est idem si à l ligne 23 je mets nodeType au lieu de value, y a un soucis d'homogénéité dans le typage sûrement mais je trouve  pas où est l'os :(


Message édité par tintin34 le 20-12-2011 à 14:25:28
n°2117539
tintin34
Posté le 20-12-2011 à 18:41:23  profilanswer
 

Y 'a pas de raison que ca puisse venir du fichier XML?

n°2118148
tintin34
Posté le 23-12-2011 à 15:38:27  profilanswer
 

aucune piste pour essayer de déterminer où ca peut clocher?

n°2118761
tintin34
Posté le 30-12-2011 à 10:50:20  profilanswer
 

je reviens vers vous car je m'arrache les cheveux
 
j'ai été à cette url
http://www.w3schools.com/xml/tryit [...] getelement
 
si j'edite leur code directement sur leur interface on parcours le fichier books.xml parfaitement
 
si je recopie leur code html dans un fichier et le books.xml dans un autre , on placant les deux fichiers chez mon hébergeur ca me sort une erreure "objet requis" à la ligne où on lit ...nodeValue
 
c'est exactement la même erreure au même endroit que j'obtiens avec mon propre code
 
est ce que quelqu'un a une idée d'où ca vient?

n°2118801
tintin34
Posté le 30-12-2011 à 16:03:56  profilanswer
 

je suis une piste le problème se situe dans le fichier books.xml
 
quand j'ai fait copier/coller du contenu dans un nouveau fichier avec notepad++ j'obtiens un fichier codé "semble t'il en ANSI" et avec ce fichier ca ne fonctionne pas chez mon hebergeur
 
en revanche apres avoir enregistré la cible du meme fichier que l'on trouve à l'url indiquée et que je le place chez l'hebergeur ca fonctionne
 
en regardant de plus pres celui qui marche pas fait 878 octets alors que celui qui fonctionne fait 844 octets deplus ce deuxieme est encodé en ISO-8859-1 comme ce qui est déclaré dans la balise du debut alors que celui obtenu par copier/coller lui est encodé en ANSI alors que c'est déclaré en ISO-8859-1
 
est ce que quelqu'un sait où sont les différences et comment obtenir à l'edition d'un fichier perso en xml le bon codage à moins qu'on sache le convertir peut etre?
 
:heink:

n°2118867
tintin34
Posté le 31-12-2011 à 15:43:46  profilanswer
 

Il semble bien que j'ai bien mis le doigt sur le bas qui blessait. Je viens de lire que ANSI et ISO-8859-1 serait pareil mais j'ai vu que dans les fichiers xml qui fonctionnaient pas il restait des caractères à problème
 
maintenant je tourne avec un fichier fonctinnel
 
avec une fonction ecrire et une fonction charger (j'arrive pas trop a consulter le petit fils mais passont je vais bien finir par trouver)
 
par contre je m'interroge maintenant sur des stratégies algorythmiques
 
mes balises dans le XML je leur veux des styles spécifiques
ma fonction Ecrire modifie deux div particulieres, est ce que je dois la réécrire pour taper dans n'importe quelle div passé en paramètre
 
quant à la fonction charger elle accède à peu pres aux différentes parties du XML sauf qu'elle me retourne une chaine où toute la mise en forme html est pour le moment indiqué comme ca manuellement
 
ne vaudrait il pas mieux qu'elle crèe une chaine avec des balises html de type div concaténé au contenu lu dans le fils xml?
 
pour certaines informations trouvées dans le xml je souhaite appliquer un script de mise en page sur plusieurs colonnes . par aillieurs j'ai pas réussi a inclure des balises html dans mon XML source (comme IMG, FONT,B...) pour qu'elles soient interprétées comme tel lors de l'utilisation du innerHTML, quel est l'eventuelle protection a faire?
 
enfin est il mieux que ma fonction charger gèrer un algorithme de traitement global de n'importe quelle source xml que je lui envoie en rendant une unique chaine html a inclure ou mieux vaut faire appelle a plein de ecrire (modifié dnas ce cas) et dans ce cas est ce que je dois créer les div où bien peuvent elles fixées dès le debut dans le html vide afin que ecrire puisse associer balise xml avec id de la div a remplir
 
c'est peut etre confus tout ca donc je peux re-preciser ce que je demande au cas où ;)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  comment remplacer le contenu d'une div par celui d'un fichier?

 

Sujets relatifs
[Résolu][Bash] Recherche ligne par ligne dans un fichier .gzComment supprimer une boite de dialogue à l'ouverture d'un fichier?
[DELPHI] Lire les détails d'un fichier ?[XUL/js] variables en global dans un fichier annexe
Traduire un fichier HTML volumineux ...remplacer une chaine par une autre à partir d'une liste
envoyer des fichier en vbs[C++] Utiliser un fichier texte comme ressource
Filtrage fichier XML via DomModifier (et non remplacer) contenu d'un fichier texte
Plus de sujets relatifs à : comment remplacer le contenu d'une div par celui d'un fichier?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR