j'avais bien compris !!!! mais pourquoi faire ?????
tu te compliques bien la vie....
retourne les données ou lit un fichier xml.
mais bon...
http.open,http.responseXml... c'est quoi http ?
xhr déjà. mais très loin d'être sûr que ça fonctionnera
tel quel avec tous les navigateurs
( sans préjuger du reste du script ! car déjà :
document.formulaire.zsnom = http.responseXml.getElementsByTagname("donne");
mal placé, doit être dans la fonction onreadystatechange
le tagname donne n'eiste pas dans le xml renvoyé .... )
en php : echo $champ1.';'.$champ2....
coté javascript :
var recu=xhr.responseText.split(";");
document.formulaire.zsnom = recu[0]; ....
>>Cependant, j'aimerai rajouter à l'évennement clique la création
>>d'un fichier xml
je ne comprends pas ce que tu veux faire...
tu veux créer en javascript un fichier xml ?
primo, ce sera donc sur le micro client, pas sur le serveur.
deuxio, xml.save() est possuible avce IE ( dans un .hta, pas un .htm )
et avec FF on peut y parvenir en gérant comme si c'était un fichier
texte "normal"
opera, chrome, safari.... je crains que ce ne soit pas
possible aujourd'hui (??)
si c'est sur le serveur ==> langage serveur !
>>( qui ira chercher des informations dans la base de données )
je comprend encore moins ????
pourquoi créer du xml à partit d'une base de données ?
soit tu n'as pas de base de données et tu utilises xml
pour faire
soit tu as une base de données, et tu en exploites les données.
oui en faite, je veux par exemple si je tape fabrice dans une zone de saisie, récupérer dans la base le nom, tel, adresse etc pour le mettre dans mon fichier xml, afin d'afficher le tout dans mon formulaire.
je répète ?
et pourquoi passer par un xml ?
met les directement depuis ta base de données ? non ?
tu appelles le langage sur le serveur pour gérer cette base,
il te renvoie une page avec le formulaire rempli, et point barre....
@+
en faite je peux créer une chiane dans ma page .php formaté comme du xml exemple
<?php
header("content-type:text/xml"); // tres important pour dire que la réponse qui va suivre doit être traitée comme du xml
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<racine>';
echo '<fils></fils>';
echo '</racine>';
?>
je me pose des questions concernant la récupération de ces données cela devra ressembler à quelque chose comme sa ?
function Tajax()
{
var xhr=null;
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
elseif(window.ActiveXObject)
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
//on définit l'appel de la fonction au retour serveur
xhr.onreadystatechange = function(){ alert_ajax(xhr); };
ch = document.formulaire.test.value;
alert(ch);
http.open("GET", "xml.php?test=" + escape(ch), true);
xhr.send(null);
document.formulaire.zsnom = http.responseXml.getElementsByTagname("donne");
}
$abr = $_GET['abr']; $q 'SELECT name from clients WHERE id '.$abr.'; '
$r = mysql_query($q);
if((mysql_num_rows($r)>0))
{
$name = '';
header("content-type:text/xml"); // tres important pour dire que la réponse qui va suivre doit être traitée comme du xml
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<exemple>';
while($rep=mysql_fetch_array($r)){
echo '<donne>';
echo $rep['name'],
echo '</donnne>';
}
echo '</exemple>';
}
?>
le second alert de ma page index.html ne s'ouvre pas, j'en déduit que je suis donc déjà bloqué avant
<script type="text/javascript">
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}
function go(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok if(xhr.readyState 4 && xhr.status 200)
{
// On se sert de innerHTML pour rajouter les options a la liste
ch = document.formulaire.id.value;
http.open("GET", "xml.php?id=" + escape(ch), true);
xhr.send(null);
document.formulaire.nom.innerHTML = xhr.responseXml.getElementsByTagname("nom");
document.formulaire.pnom.innerHTML = xhr.reponseXml.getElementsByTagname("pnom");
}
}
</script>
[javascript:go(); Valider]
<form action="index.html" name="formulaire">
</form>
</html>
--------------------------------page xml.php
<?php
include('config.php');
$abr = $_GET['abr']; $q 'SELECT name from clients WHERE id '.$abr.'; '
$r = mysql_query($q);
if ((mysql_num_rows($r)>0))
{
header("content-type:text/xml"); // tres important pour dire que la réponse qui va suivre doit être traitée comme du xml
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<exemple>';
while ($rep=mysql_fetch_array($r)){
echo '<nom>';
echo $rep['nom'];
echo '</nom>';
echo '';
echo $rep['pnom'];
echo'
t'as pris bonne note mais t n'as pas lu...
document.formulaire.nom.innerHTML = xhr.responseXml.getElementsByTagname("nom");
document.formulaire.pnom.innerHTML = xhr.reponseXml.getElementsByTagname("pnom");
déjà. dit : mal placé, doit être dans la fonction onreadystatechange
et ce, sans préjuger du reste !
et si tu parviens à faire fonctionner, un conseil néanmoins :
vérifie avec tous ( ou presque ) les navigateurs !