Problème ajax récupération ligne plusieurs fichiers

Kev-sky62 -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,
j 'ai mis en place une liste déroulante qui permet de choisir 2 options (anglais ou francais) qui récupère le contenu de deux fichiers (l 'un est en anglais l 'autre en français).

Lorsque je vais sur la page d 'accueil le texte est en anglais, je vais sur la liste déroulante je choisis french le texte est traduit en français. Ensuite je remet anglais, le texte est retraduit en anglais c 'est parfait. Par-contre lorsque je remet français encore une fois, rien ne se passe, j 'aurai voulu avoir votre aide pour corriger ce problème s 'il vous plaît.

C 'est surement un problème avec les <div> qui sont collés.
Voici le code de home.php

include "./utils/ajax/en.html";
include "./utils/ajax/fr.html";

echo "<div id='text1home'>
<table width='300px'>
<tr><td>
<div id='en'>
<div id='fr'>Foundation Trust cares for more than one million patients a year
from our local community and further afield. Patients come to us with a wide range
of medical needs and from diverse ethnic and cultural backgrounds
</div></div>
</tr></td>
</table></div>";


echo "<p class='language'>Change Language: <br />
<select name='language'>
<option value='en' name='en' onclick='getEnglish()'> English</option>
<option value='fr' name='fr' onclick='getFrench()'> French</option>
</select>
</p> ";

Celui de fr.html

<script language="javascript" type="text/javascript">
function getFrench()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{

document.getElementById("fr").innerHTML=xmlhttp.responseText;
}
else
{
document.getElementById("fr").innerHTML="Waiting for Response Server";
}
}
xmlhttp.open("GET","./utils/ajax/french.txt",true);
xmlhttp.send();
}
</script>

Le fichier "en.html" est équivalent à celui-ci avec le chemin (./utils/ajax/english.txt) qui change et les getElementById mais de toute façon le problème ne vient pas de ses fichiers vu qu 'il s 'exécute bien au début.

Merci pour votre attention.

A voir également:

9 réponses

gardiendelanuit Messages postés 1854 Statut Membre 264
 
Bonsoir,
As-tu regardé s'il y avait quelque chose dans la console?
0
Kev-sky62
 
Bonsoir, merci de me répondre mais je ne sais pas de quelle question vous voulez parler, je travaille avec wamp et notepadd
0
gardiendelanuit Messages postés 1854 Statut Membre 264
 
Je parle de la console de ton navigateur qui est d'ailleurs très bien pour débugger ce genre de problème si ça viens de l'ajax ou du réseau (firefox)
0
Kev-sky62
 
Je ne sais pas comment on fait, petite chose en plus j 'ai tout simplement décider de fusionner les fichiers en.html et fr.html en language.html, mais le problème persiste

Sous chrome c 'est pire sa n 'exécute même pas le ajax une seule fois
0
gardiendelanuit Messages postés 1854 Statut Membre 264
 
Sous Mozilla: Firefox >> Développement Web >> Console d'erreurs
Sous Chrome tape simplement la touche F12 et dans l'onglet console.

Si tu n'y comprend pas grand chose poste les ici.
0
Kev-sky62
 
Il n 'y a pas d 'erreurs en rapport avec la page
0
Kev-sky62
 
Ah si excusez-moi je découvre ce système voici le rapport

Error: document.getElementById("fr") is null
Source File: http://127.0.0.1/hopital/
Line: 70

Error: document.getElementById("fr") is null
Source File: http://127.0.0.1/hopital/
Line: 70

Error: document.getElementById("fr") is null
Source File: http://127.0.0.1/hopital/
Line: 66
0
Alain_42 Messages postés 5413 Statut Membre 894
 
pourquoi faire plusieurs fct JS une pour chaque langue, une selue suffit en lui passant en argument la langue voulue:
...
<table width='300px'>
<tr><td>
<div id='affichage'>
</div>
</tr></td>
</table></div>


<p class='language'>Change Language: <br />
<select name='language'>
<option value="en"  onclick="getLanguage('english');"> English</option>
<option value="fr"  onclick="getLanguage('french');"> French</option>
</select>
</p>

Celui de fr.html

<script language="javascript" type="text/javascript">
function getLanguage(langue)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{

document.getElementById('affichage').innerHTML=xmlhttp.responseText;
}
else
{
document.getElementById('affichage').innerHTML="Waiting for Response Server";
}
}
xmlhttp.open("GET","./utils/ajax/"+langue+".txt",true);
xmlhttp.send();
}
</script> 
0
Kev-sky62
 
J 'ai essayé mais ça me met encore:

Error: french is not defined
Source File: http://127.0.0.1/hopital/
Line: 1
0
Kev-sky62
 
Voici le code maintenant

home.php

include "./utils/ajax/language.html";

echo "<div id='text1home'>
<table width='300px'>
<tr><td>
<div id='affichage'>
Foundation Trust cares for more than one million patients a year
from our local community and further afield. Patients come to us with a wide range
of medical needs and from diverse ethnic and cultural backgrounds
</div>
</tr></td>
</table></div>";


echo "<p class='language'>Change Language: <br />
<select name='language'>
<option value='en' name='english' onclick='getLanguage(english)'> English</option>
<option value='fr' name='french' onclick='getLanguage(french)'> French</option>
</select>
</p>";

language.html

function getLanguage(langue)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{

document.getElementById("affichage").innerHTML=xmlhttp.responseText;
}
else
{
document.getElementById("affichage").innerHTML="Waiting for Response Server";
}
}
xmlhttp.open("GET","./utils/ajax/"+langue+".txt",true);
xmlhttp.send();
}
0
Kev-sky62
 
Error: english is not defined
Source File: http://127.0.0.1/hopital/
Line: 1
0

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

Posez votre question
Alain_42 Messages postés 5413 Statut Membre 894
 
echo "<p class='language'>Change Language: <br />
<select name='language'>
<option value='en' name='english' onclick='getLanguage(\'english\')'> English</option>
<option value='fr' name='french' onclick='getLanguage(\'french\')'> French</option>
</select>
</p>";

//english  french sont des valeurs que tu passes à la fonction il faut donc qu'elle soient entre '
//comme il y en a déja dans la chaine il faut les echapper
0
Kev-sky62
 
Error: illegal character
Source File: http://127.0.0.1/hopital/
Line: 1, Column: 12
Source Code:
getLanguage(\
0
Alain_42 Messages postés 5413 Statut Membre 894
 
pour simplifier le codage et eviter ces pb d'échappement des '

sort du php et met le html sans passer par echo:

<?php
include "./utils/ajax/language.html";
?>
<div id='text1home'>
<table width='300px'>
<tr><td>
<div id='affichage'>
Foundation Trust cares for more than one million patients a year
from our local community and further afield. Patients come to us with a wide range
of medical needs and from diverse ethnic and cultural backgrounds
</div>
</tr></td>
</table></div>


<p class="language">Change Language: <br />
<select name="language">
<option value="en" name="english" onclick="getLanguage('english');"> English</option>
<option value="fr" name="french" onclick="getLanguage('french');"> French</option>
</select>
</p> 
0
Kev-sky62
 
Impek t 'es un dieu je te remercie du fond du coeur ;)
0
Kev-sky62
 
Bonsoir, j 'ai de nouveau besoin votre aide concernant Ajax.

Je m 'explique:
xmlhttp.open("GET","./utils/ajax/"+langue+".txt",true);
cette fonction permet de récupérer le contenu du fichier dans sa totalité.

J 'aurais voulu savoir si par exemple en agissant sur une page html (ou il y aurait des paragraphes de texte avec des div les identifiants) on ne pourrait qu 'afficher QUE une partie du fichier html et non plus tout son contenu comme avant

Merci de votre attention.
0
Alain_42 Messages postés 5413 Statut Membre 894
 
tu peux essayer en masquant par defaut tous les div de ta page langue.txt

<div id="id_xxxxx" style="display:none">..... </div>
<div id="id_yyyyy" style="display:none">..... </div>
<div id="id_zzzzz" style="display:none">..... </div>
//etc

puis tu fait afficher après la réponse ajax le div que tu veux
.....
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{

document.getElementById("affichage").innerHTML=xmlhttp.responseText;

//tu fais afficher seulement le div concerné, pas ex id_yyyyyy
document.getElementById("id_yyyyyy").style.display='block';
} 

....
0
Kev-sky62
 
Autre solution sur laquelle je me penche, c 'est de récupérer directement les infos souhaités dans les balises d 'un fichier xml
0
Alain_42 Messages postés 5413 Statut Membre 894
 
ha oui la solution xml doit être mieux je pense
0