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

jQuery Discussion :

ajax et xml


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Par défaut ajax et xml
    Bonjour, tout d'abord merci de bien vouloir m'aider, je patauge depuis des heures sans avancer.
    J'utilise jquery pour manipuler l'ajax, voici mon code:

    Page où j'ai fait ma liste:
    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
    <?php
    include("include/connexion.php");
    echo '<div id="listeLog"><form><select name="logiciels" id="listLog" size="20" onChange="mettreAjour()">';
            mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur $host");
            mysql_select_db("siteperso") or die("erreur de connexion a la base de donnees");
            $query = "SELECT nom FROM logiciel";
            $result = mysql_query($query);
            while($row = mysql_fetch_row($result)){
                    echo '<option>'.$row[0];
                    }
            if (isset($_POST['nomLog'])) {
            $query = "SELECT chemin, domaine, comm FROM logiciel where nom like".$_POST['nomLog'];
            $result = mysql_query($query);
            while($row = mysql_fetch_row($result)){
                                    $chemin=$row[0];
                                    $domaine=$row[1];
                                    $comment=$row[2];
                            }
            };
    echo '</select></form></div>
                    <div id="type"></div>
                    <div id="description"></div>
                    <div id="lien"></div>';
    ?>
    page du code ajax envoyant le nom du logiciel à une page php:
    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
    // Partie AJAX du site web :
    function mettreAjour(){
    	nom = document.getElementById("listLog").value;
    	//alert(nom);
    	//chaine = "nomLog="+nom;
    	//alert(chaine);
    $.ajax({
       type: "POST",
       url: "include/infolog.php",
       data: "nomLog="+nom,
       dataType: "xml",
       success: function(xml)
       {
    	   $(xml).find('infos').each(function()
    			{
         		document.getElementById("type").innerHTML =$(this).find('domaine').text();
    	 		document.getElementById("description").innerHTML =$(this).find('commentaire').text();
    	 		document.getElementById("lien").innerHTML =$(this).find('lien').text();
    			});
       },
    	error: function(){alert("marche pas");}
     	});
    }
    page php récupérant les données du logiciel que je veux afficher, renvoi du xml (normalement):
    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
    <?php
            include("include/connexion.php");
            mysql_connect($host,$user,$passwd) or die("erreur de connexion au serveur $host");
            mysql_select_db("siteperso") or die("erreur de connexion a la base de donnees");
            $query = "SELECT chemin, domaine, comm FROM logiciel where nom like".$_POST[['nomLog'];
            $result = mysql_query($query);
            echo '
            <?xml version="1.0" encoding="utf-8"?>
            <root>';
            while($row = mysql_fetch_row($result)){
                    echo '
                    <infos>
                    <domaine>'.$row[1].'</domaine>
                    <commentaire>'.$row[2].'</commentaire>
                    <lien><a href="'.$row[0].'">Télécharger</a></lien>
                    </infos>';
                            }
            
            echo '</root>';
            mysql_close(); 
    ?>
    Alors mon problème est le suivant, je suis renvoyé à l'évènement erreur si je mets datatype: "xml", si je ne le met pas il se passe rien et quand je test la valeur $(this).find('domaine').text() avec un alert, la valeur est vide.

    Je pense que j'ai un problème avec la réponse en xml mais je vois pas du tout comment résoudre le problème car je suis un néophyte dans ce domaine .

    Merci de votre aide !

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Exemple (chez moi, le XML en local ne fonctionne que sous Firefox. Il n'a jamais fonctionné sous IE et il ne fonctionne plus sous Chrome 5) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="utf-8"?>
    <root>
    	<infos>
    		<domaine>jQuery</domaine>
    		<commentaire>Fondations, plug-ins, et widget</commentaire>
    		<lien href="http://danielhagnoul.developpez.com">Mon Cahier d'exercices sur jQuery &amp; Co</lien>
    	</infos>
    </root>
    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
    <!doctype html>
    <html lang="fr">
    <head>
    	<meta charset="utf-8" />
    	<title>Document sans nom</title>
    	<script charset="utf-8" src="../lib/jqueryui/js/jquery-1.4.2.min.js"></script>	
    	<script>
    		$(function() {
    			$.get("root.xml", function(xml) {
    				$(xml).find('infos').each(function(i, item){
    					$("#type").html($(item).find('domaine').text());
    					$("#description").html($(item).find('commentaire').text());
     
    					var url = $(item).find('lien').attr("href");
    					var str = $(item).find('lien').text();
     
    					$("#lien").html("<a href='" + url + "'>" + str + "</a>");
    				});
    			}, "xml");
    		});
    	</script>
    </head>
    <body>
    	<div id="type"></div>
    	<div id="description"></div>
    	<div id="lien"></div>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Par défaut
    Si ça marche pour toi en local sur firefox, je boss déjà en local sur firefox. Peut-être que le problème vient de wamp...

    Ou si je lis bien ton code concernant le xml est faux. Sauf que ma fonction n'a jamais été lancé parce que quand je mets le dataType : "xml" dans l'ajax de jquery, je tombe directement sur l'événement error. Alors que lorsque je ne le mets pas rien ne se passe.

    Donc le problème reste le même ^^ mais merci de ta réponse elle m'aidera surement.

    Question à 2 balles, est-ce que le problème ne viens pas de ceci :

    - abscence de $(document).ready(function() ?

    - et l'url donne sur une page php et pas sur du xml ? (seulement si jquery ne trouve pas le fichier xml parce que j'utilise une page php qui me renvoi du xml avec des echo ça m'embêterai)

    Merci.

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    Citation Envoyé par stilgard Voir le message
    abscence de $(document).ready(function() ?
    Non, $(function() est la forme abrégée.

    Mon exemple vient en réaction au
    <lien><a href="'.$row[0].'">Télécharger</a></lien>
    dans votre code XML et au traitement de l'information coté jQuery.

    Le fait que j'utilise un exemple avec $.get() au lieu de $.ajax() ne change rien au traitement du XML.

    Pour le PHP, je suis débutant et non compétent.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Par défaut
    Merci pour ta réponse. Demain je test la méthode que tu as utilisée, faire les modifs en conséquence et je reviens aux nouvelles.

    [Edit 2010-06-11 16:47]

    Ton code doit marcher puisque tu le dis, seulement il faut préciser un nom de fichier .xml et ça ne marche pas avec une page en php à mon avis. DAMNED, j'ai horreur d'avoir autant de résistance par rapport à mes programmes. Surtout quand je ne sais pas pourquoi.

  6. #6
    Membre habitué
    Inscrit en
    Juin 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 9
    Par défaut
    Bon, j'ai résolu des problèmes d'appel de page, ma page php envoi bien du xml grâce à des echo cependant j'ai toujours le même problème avec jquery.

Discussions similaires

  1. [AJAX] [Ajax + PHP + XML] Parser le XML
    Par Dolerho dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/11/2006, 07h43
  2. [AJAX] JavaScript, Ajax et XML
    Par tclariss dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/10/2006, 22h53
  3. [AJAX] Retour xml
    Par Pollux dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 31/05/2006, 16h10
  4. [AJAX] Retrouver xml envoyé du client au serveur (via méthode POST)
    Par leszek dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/05/2006, 16h07
  5. [AJAX] Réponse XML - Functions Javascript
    Par ..:: Atchoum ::.. dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 24/01/2006, 03h02

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