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

Fermé
Kev-sky62 - 11 déc. 2012 à 17:03
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 23 déc. 2012 à 22:17
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 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
11 déc. 2012 à 17:08
Bonsoir,
As-tu regardé s'il y avait quelque chose dans la console?
Bonsoir, merci de me répondre mais je ne sais pas de quelle question vous voulez parler, je travaille avec wamp et notepadd
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
11 déc. 2012 à 17:16
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
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 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
11 déc. 2012 à 17:35
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
Il n 'y a pas d 'erreurs en rapport avec la page
0
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 déc. 2012 à 18:34
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> 
J 'ai essayé mais ça me met encore:

Error: french is not defined
Source File: http://127.0.0.1/hopital/
Line: 1
0
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();
}
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 déc. 2012 à 20:12
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
Error: illegal character
Source File: http://127.0.0.1/hopital/
Line: 1, Column: 12
Source Code:
getLanguage(\
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 déc. 2012 à 21:25
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> 
Impek t 'es un dieu je te remercie du fond du coeur ;)
0
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.
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 déc. 2012 à 22:07
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';
} 

....
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 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
23 déc. 2012 à 22:17
ha oui la solution xml doit être mieux je pense