IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[AJAX] xml + php / javascript,probl�mes de compr�hension


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Novembre 2004
    Messages
    151
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Par d�faut [AJAX] xml + php / javascript,probl�mes de compr�hension
    bonjour tout le monde

    j'essaye actuellement de d�velopper un script de statistiques de serveurs vocaux. Ce script marche comme ceci :
    il y a un script php local sur chaque serveur et un script distant sur un autre serveur.
    Chaque script local s'adresse � une BD et renvoie une r�ponse XML.
    Enfin le script distant fais un echo en xml de tous les scripts locaux.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    echo '<listServers>';
    $bd=new bd();
    $bd->connectBase('localhost','root','','script');
    $req='SELECT ipServer, pathScript, serverName FROM server'; 
    $res=$bd->executeRequete($req);
     
    $nbServer=mysql_num_rows($bd->resultatRequete);
    if($nbServer>0) {
    	while($m=$bd->getLigneResultatSuivante()) {
    		$adresse='http://';
    		$adresse.=$m['ipServer'];
    		$adresse.=$m['pathScript'].'?vers='.$ver.'&nbDays='.$nbDays.'&nbHours='.$nbHours;
    		$page=@file_get_contents($adresse);
    		echo '<server nom="'.$m['serverName'].'">';
    		echo $page;
    		echo '</server>';
    	}
    }
    echo '</listServers>';
    de ce fait je peux afficher les r�sultats avec un fichier XSLT.
    Bref, le fait est que je voudrais afficher tout ca sans php et sans XSLT.
    J'ai donc pens� au javascript. Et javascript + xml ca a donn� ajax !
    Apr�s de nombreuses lectures depuis ce matin, j'ai essay� de nombreuses fois de faire marcher ce script :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <?xml version="1.0" encoding="iso-8859-1" ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <title>Liste des DVD</title>
    <script src="script.js" type="text/javascript"></script>
    </head>
    <body>
    <script type="text/javascript">
    <!--
     
    var xhr = getXMLHttpRequest();
    xhr.onreadystatechange = handleHttpResponse;
     
    var url = "remote_script.php?version=light&nbDays=0&nbHours=2";
    xhr.open("GET", url, true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send(null);
     
    function handleHttpResponse() {
    	if(xhr.readyState == 4 && xhr.status == 200) {
                             alert(xhr.responseXML)
    		var items    = response.getElementsByTagName("server");
    		var html     = ''; 
    		count        = items.length;
    		for(i = 0; i < count; i++) { 
    			html += '<h1>' + items[i].getElementsByTagName("nbCurrentCalls")[0].firstChild.nodeValue + '</h1>';
    			html += items[i].getElementsByTagName("nbLastHourCall")[0].firstChild.nodeValue;
    			html += items[i].getElementsByTagName("dureeLastHourCall")[0].firstChild.nodeValue;
    		}
    		document.getElementById('content').innerHTML += html;
    	}
    }
     
    -->
    </script>
    <div id="content"></div>
    </body>
    </html>
    malheureusement sans r�ussite ...
    j'ai essay� de faire un alert(xhr.responseXML)
    il me renvoie null
    si je fais un alert(xhr.responseXML) il me renvoie bien tout le xml dans l'alert...
    merci d'avance

    ps : mon fichier XML est de la forme :

    listServers
    - server nom=" " (autant que de serveurs)
    - current (autant que d'appels en cours)
    arboName
    callStart
    duration
    - stats
    nbCurrentCalls
    nbLastHourCall
    dureeLastHourCall
    dureeLastDayCall
    nbLastDayCall

    [edit] : j'ai rajout� le text/xml dans ma page et depuis j'ai r�ussi �
    afficher : undefinedundefinedundefined dans ma page r�sultat ...
    je pense que maintenant le r�sultat xml parvient � la page mais je n'arrive pas � l'afficher ...
    quelqu un pourrait il m'aider � faire l'affichage du fichier xml qui est donn� en dessous svp svp

  2. #2
    Membre confirm�
    Inscrit en
    Novembre 2004
    Messages
    151
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Par d�faut
    bon j'ai l'impression que d'apr�s ce que m'affiche tout ca il me manque que savoir parser mon fichier XML avec javascript.

    j'y arrive vraiment pas
    j'ai essay� ca :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function handleHttpResponse() {
    	if(xhr.readyState == 4 && xhr.status == 200) {
    		var docXML= xhr.responseXML;
    		servers=docXML.getElementsByTagName('server');
    		stats=servers[0].getElementsByTagName('stats');
    		html+=stats[0].getElementsByTagName('nbCurrentCalls');
    	}
    	document.getElementById('content').innerHTML += html;
    }
    </script>
    <div id="content"></div>
    </body>
    et firefox me r�pond
    -->[object HTMLCollection]

    je sais plus quoi faire, je suis all� voir la doc du DOM mais toujours rien
    svp j'ai besoin d'aide....

  3. #3
    Expert confirm�

    Avatar de denisC
    Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2005
    Messages
    4 050
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : Service public

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 4 050
    Par d�faut
    Citation Envoy� par AsQuel
    et firefox me r�pond
    -->[object HTMLCollection]
    Normal,
    Code js : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    html+=stats[0].getElementsByTagName('nbCurrentCalls');
    getElementsByTagName te retourne bien une collection de noeuds. Donc ajouter ca dans une chaine de caract�re, c'est pas l'id�al....

    Il faut faire une boucle sur ces �lements (ou prendre le premier si �a te suffit) et acceder au texte contenu avec

  4. #4
    Membre confirm�
    Inscrit en
    Novembre 2004
    Messages
    151
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Par d�faut
    c'est juste, merci

    j'ai essay� ca marche mieux mais j'ai encore quelques probl�mes de compr�hension :

    je suis sur que j'ai plusieurs balises server
    mais une fois dans server je sais que je ne peux avoir que une balise stats par server.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    for(i = 0; i < servers.length; i++) {
    			stats=servers[i].getElementsByTagName("stats");
    			html+=stats[0].getElementsByTagName("nbCurrentCalls")[0].firstChild.data; 
    		}
    	}
    	document.getElementById("content").innerHTML += html;
    ceci marche, mais pourquoi suis je oblig� de mettre stats[0] ??

    [edit ] a oui j'oubliais, une petite derni�re question :

    ma balise server en xml est de ce type l� : <server name="xxxxx"> j'ai besoin d'afficher le nom, pourriez vous me dire comment faire ?

  5. #5
    Expert confirm�

    Avatar de denisC
    Profil pro
    D�veloppeur Java
    Inscrit en
    F�vrier 2005
    Messages
    4 050
    D�tails du profil
    Informations personnelles :
    �ge : 45
    Localisation : Canada

    Informations professionnelles :
    Activit� : D�veloppeur Java
    Secteur : Service public

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 4 050
    Par d�faut
    Citation Envoy� par AsQuel
    ceci marche, mais pourquoi suis je oblig� de mettre stats[0] ??
    Toi t'es sur, mais JS ne peut pas savoir. getElementsByTagName renvoie toujours un tableau, m�me si il n'y a qu'un �lement..... C'est la signature de la m�thode, t'as pas le choix

    Citation Envoy� par AsQuel
    ma balise server en xml est de ce type l� : <server name="xxxxx"> j'ai besoin d'afficher le nom, pourriez vous me dire comment faire ?
    Code js : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    nom=servers[i].name;

    ou encore, pour �tre 100% DOM:
    Code js : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    nom=servers[i].getAttribute('name');

  6. #6
    Membre confirm�
    Inscrit en
    Novembre 2004
    Messages
    151
    D�tails du profil
    Informations personnelles :
    �ge : 40

    Informations forums :
    Inscription : Novembre 2004
    Messages : 151
    Par d�faut
    merci beaucoup
    tout ca marche !!

    j'ai suivi un tuto pour faire cette partie l� :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    stats=servers[i].getElementsByTagName("stats");
    			nom=servers[i].getAttribute('nom');
    			html+='Serveur ' + nom + ' : '+ stats[0].getElementsByTagName("nbCurrentCalls")[0].firstChild.data; +'<br/>';
    			html+='<table border="1" width="200"><tr><th></th><th>Nb calls</th><th>Durée</th></tr>';	
    			html+='<tr>	<td><b>Heure(s)</b></td>';
    			html+='<td>'+ stats[0].getElementsByTagName("nbLastHourCall")[0].firstChild.data;' + </td>';
    			html+='<td>'+ stats[0].getElementsByTagName("dureeLastHourCall")[0].firstChild.data;' + </td>';
    			html+='</tr>';
    			html+='<tr>	<td><b>Jour</b></td>';
    			html+='<td>'+ stats[0].getElementsByTagName("nbLastDayCall")[0].firstChild.data;' + </td>';
    			html+='<td>'+ stats[0].getElementsByTagName("dureeLastDayCall")[0].firstChild.data;' + </td>';
    			html+='</tr>';  
    			html+='</table>';
    			html+='<br/>';
    mais tu m'as dit, "pourquoi met tu tout ca dans une string"
    y a t il une autre m�thode que de mettre tout dans une string ?

Discussions similaires

  1. Xml xsl javascript probl�me d'affichage de liste
    Par zedzander dans le forum XML/XSL et SOAP
    R�ponses: 6
    Dernier message: 25/11/2015, 15h03
  2. [PHP-Javascript] Probl�me ex�cution
    Par kamy86 dans le forum Langage
    R�ponses: 4
    Dernier message: 17/07/2009, 15h48
  3. R�ponses: 1
    Dernier message: 11/08/2008, 16h30
  4. Affichage xml,php, javascript..
    Par magicpapillon77 dans le forum G�n�ral JavaScript
    R�ponses: 9
    Dernier message: 04/08/2008, 12h56
  5. [AJAX] Communication PHP ~ JavaScript
    Par TheBaeK1 dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 04/05/2006, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo