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

AJAX Discussion :

[AJAX] Interaction avec le serveur:AJAX +PHP


Sujet :

AJAX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut [AJAX] Interaction avec le serveur:AJAX +PHP
    Bonjour à tous,
    j'essaye d'utiliser ce logiciel avec tous les exemples et je bute pour l'exercice n°4 (index4.HTML, ajax4.js et reponse.php après avoir créer la table temp) le fichier php va lire dans la base de données et transformer le résultat en XML.
    J'obtiens une erreur pour reponse.php:
    ""La page XML ne peut pas être affichée
    Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement.


    --------------------------------------------------------------------------------

    Les balises suivantes n'ont pas été fermées : exemple. Erreur de traitement de la ressource http://127.0.0.1:8888/infopub/r...
    ""
    Quelqu'un peut'il m'aider? d'avance, je vous remercie.
    Claudine

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    j'essaye d'utiliser ce logiciel
    C'est à nous de deviner lequel ?

    Ceci dit, à part si tu nous montres ton code, il n'y a pas grand chose que nous puissions faire pour t'aider...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Bovino,
    Il s'agit des démos: http://gael-donat.developpez.com/web/intro-ajax/
    III-A interaction avec le serveur: Ajax-PHP. C'est le seul qui ne fonctionne pas!,Dommage car très instructif!
    Voici les différents code:
    'index4.html'
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <head>
    	<title>Exemple 4</title>
    </head>
    <body>
     
    <script type="text/javascript" src="ajax4.js"></script>
     
    <p>
    <a href="javascript:ajax();">cliquer !</a>
    </p>
     
    </body>
    </html>
    code de" reponse.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
     
    <?php
    header('Content-Type: text/xml'); 
    echo "<?xml version=\"1.0\"?>\n";
    echo "<exemple>\n";
     
    //on connecte a la BDD
    //include('./connect-bd.php');
     
    //on lance la requete
    $query = "SELECT text FROM temp";
    $result = mysql_query($query,$dblink) or die (mysql_error($dblink));
     
    //On boucle sur le resultat
    while ($row = mysql_fetch_array($result, MYSQL_NUM))
    {
            echo "<donnee>" . $row[0] . "</donnee>\n";
    }
    echo "</exemple>\n";
     
    ?>
    le but c'est de voir comment générer un fichier XML avec PHP et MYSQL pour lire dans la base de données et afficher sans rechargement de la page.
    Code d'erreur cité dans le POST précédent
    Remerciements pour votre aide
    Claudine

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut


    On peut voir le code javascript

    A+.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Désolé,j'avais oublié ce code
    Voici le code "ajax4.js":
    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
     
    function ajax()
    {
        var xhr=null;
     
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        //on définit l'appel de la fonction au retour serveur
        xhr.onreadystatechange = function() { alert_ajax(xhr); };
     
        //on appelle le fichier reponse.php
        xhr.open("GET", reponse.php", true);
        xhr.send(null);
    }
     
    function alert_ajax(xhr)
    {
    	var docXML= xhr.responseXML;
    	var items = docXML.getElementsByTagName("donnee")
    	//on fait juste une boucle sur chaque element "donnee" trouvé
    	for (i=0;i<items.length;i++)
    	{
    		alert (items.item(i).firstChild.data);
    	}
    }
    Merci pour votre aide
    Claudine

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    1- rien qu'avec la coloration syntaxique, tu pourrais voir qu'il manque un guillemet ici
    xhr.open("GET", reponse.php", true);
    2- tu dois attendre que le readyState soit à 4 et que le status soit 200 ou 0 (aucun erreur) pour pouvoir traiter le résultat de la requête.

    A+.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Andry.aime.
    J'ai ajouter le" et rien ne change et vous me dites:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     tu dois attendre que le readyState soit à 4 et que le status soit 200 ou 0 (aucun erreur) pour pouvoir traiter le résultat de la requête.
    D'accord, mais s' il faut attendre indéfiniment, c'est le signe qu'il y a une erreur. Et comment "voir" si les différents "state" sont passés correctement?
    Voulez-vous m'aider svp?
    Claudine

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function alert_ajax(xhr)
    {
    if(xhr.readyState == 4 && (xhr.status==200 || xhr.status==0)){	
    var docXML= xhr.responseXML;
    	var items = docXML.getElementsByTagName("donnee")
    	//on fait juste une boucle sur chaque element "donnee" trouvé
    	for (i=0;i<items.length;i++)
    	{
    		alert (items.item(i).firstChild.data);
    	}
    }
    }

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonsoir Andry.aime,
    Toujours par de réponse.php
    N'y a-t'il pas moyen de lui faire indiquer un message pour voir si la connexion est bien établie et la requête reçue ? et lui faire afficher juste en-dessous de "cliquer". Je ne peux malheureusement pas situer où est le problème.
    J'espère que vous pourrez m'aider.
    Sincères remerciements
    claudine

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    re,

    1- teste le xhr.status si c'est à 0 ou 200, si ce n'est pas le cas, regarde les code d'erreurs -> http://fr.wikipedia.org/wiki/Liste_des_codes_HTTP
    2- si ça passe bien pour le premier teste, récupère les données sous forme de texte mais pas xml pour voir si le flux xml est bien généré:

    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
    function alert_ajax(xhr)
    {
    	if(xhr.readyState == 4){
    		if(xhr.status==200 || xhr.status==0){
    			var docXML= xhr.responseText;
    			alert(docXML);
    			/*
    			var items = docXML.getElementsByTagName("donnee")
    			for (i=0;i<items.length;i++)
    			{
    				alert (items.item(i).firstChild.data);
    			}*/
    		}else{
    			alert("Error: returned status code " + xhr.status + " " + xhr.statusText);
    		}
    	}
    }
    A+.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Andry-aime
    Grâce à ces dernièreslignes de code j'ai pu afficher le code d'erreur qui se situait à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result = mysql_query($query,$dblink) or die (mysql_error($dblink));
    Correction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $result = mysql_query($query,$link) or die (mysql_error($link));
    Bref,maintenant cela fonctionne bien! un grand merci pour votre aide.
    Cependant , je constate que je ne peux afficher qu'un seul champ'text' de la table temp. J'aimerais afficher en même temp les autre champs'Nom' et ''prenom'.
    J'ai modifié le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "SELECT text FROM temp";
    en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $query = "SELECT text, nom, prenom FROM temp";
    mais il ne m'affiche que le 1er champ'text'
    Comment modifier le code actuel de reponse.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //On boucle sur le resultat
    while ($row = mysql_fetch_array($result, MYSQL_NUM))
    {
    	echo "<donnee>" . $row[0] . "</donnee>\n";
    }
    echo "</exemple>\n";
    pour afficher simultanément les 3 champs?
    Sincères remerciements pour votre aide efficace.
    Claudine

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut


    Regarde ce tutoriel.

    A+.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Andry.aime,
    comme vous me l'avez conseillé, j'ai essayer de comprendre ce logiciel. Hélas trop compliqué pour une débutante.Et cela d'autant plus que je n'arrive pas à faire fonctionner cet exemple, même pas un code d"erreur.
    Aussi voulez-vous regarder où se trouve le problème pour que je puisse comprender le fonctionnement.
    code index.html
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     
    <head>
    	<title>liste des DVD</title>
    </head>
    <body>
     
    <script type="text/javascript" src="dvd.js"></script>
     
    <p>
    <a href="javascript:exemple();">cliquer !</a>
    <div id="content"></div>
    </p>
     
    </body>
    </html>
    Code dvd.js
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <script type="text/javascript">
    function exemple(){
    	obj = document.getElementById("content");
    // ON EFFACE LE CONTENU DU DIV
    obj.innerHTML = "";
     
    if(window.XMLHttpRequest) // Firefox
    // il faut donc créer tout d'abord une instance de XMLHttpRequest grâce à l'appel de fonction getXMLHttpRequest
       xhr_object = new XMLHttpRequest();
       // les 4 lignes de codes suivantes, vont effectuer toute la première partie ,c'est-à-dire de fournir un arbre XML valide.
    var xhr = getXMLHttpRequest();
    /* La fonction handleHttpResponse est fournie plus loin dans cet article */
    xhr.onreadystatechange = handleHttpResponse;
    //les 2 lignes suivantes permettent d'envoyer la requête au serveur afin que celui-ci retourne le fichier XML
    var url = "dvd.xml";
    xhr.open("GET", url, true);
    /* A préciser pour les requêtes de type POST
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    */
    xhr.send(null);
     
    // fonction qui va traiter et afficher l'arbre XML reçu
    //celle-ci doit effectuer son traitement seulement si le serveur est disponible(<<<xhr.readyState==4>>) et si la lecture du fichier XML a bien été effectuée(<<xhr.status==200>>). Si ces conditions sont remplies, alors on proçède au nettoyage du fichier XML grâce à l'appel de la fonction cleanXML
    function handleHttpResponse() {
        if(xhr.readyState == 4 && xhr.status == 200) {
            /* xhr.responseXML permet d'obtenir le fichier XML
               xhr.responseText aurait retourné le fichier sous format texte */
            response = cleanXML(xhr.responseXML.documentElement);
            // ...
        }else{
    		alert("Error:returned status code"+xhr.status +""+xhr.statusText);
    	}
      }
    }
    //Maintenant, l'affichage des informations sur les dvd nécessite l'emploi de l'API DOM JavaScript, comme indiqué ci-dessous:
    /* Récupérer la liste des items donc la liste des DVD */
    var items    = response.getElementsByTagName("item");
    var html     = ''; /* Présentation HTML de la liste des DVD */
    /* Nombre de DVD */
    count        = items.length;
    for(i = 0; i < count; i++) { /* POUR CHAQUE item */
        html += '<div class="item">';
        html += '<h1>' + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + '</h1>';
        html += '<div class="author">R&eacute;alisateur : ';
        html += items[i].getElementsByTagName("director")[0].firstChild.nodeValue + '</div>';
        html += '<div class="price">Prix : ';
        html += items[i].getElementsByTagName("price")[0].firstChild.nodeValue + ' €</div>';
        html += '</div>';
    }
    //affichage dans la balise DIV ayant l'identifiant<<content>>
    document.getElementById('content').innerHTML += html;
    Code dvd.xlm
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <dvd>    
        <item>
            <title>Princesse Mononoké</title>
            <director>Hayao Miyazaki</director>
            <price>14,99</price>
        </item>
        <item>
            <title>Mon voisin Totoro</title>
            <director>Hayao Miyazaki</director>
            <price>19,99</price>
        </item>
        <item>
            <title>Blood, The Last Vampire</title>
            <director>Hiroyuki Kitakubo</director>
            <price>11,99</price>
        </item>
    </dvd>
    Sincères salutations
    Claudine

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    1- Dans un fichier .js, tu ne dois pas mettre le tag
    <script type="text/javascript">
    2- Je me demande bien si tu as essayé de comprendre ou tu as seulement contenté de faire un copier/coller
    if(window.XMLHttpRequest)
    xhr_object = new XMLHttpRequest();
    var xhr = getXMLHttpRequest();
    3- Tu as mal placé la fermeture de l'accolade pour la fonction exemple (placé après la fonction handleHttpResponse).

    4- La boucle for est le traitement de l'xml, elle doit être dans la fonction handleHttpResponse.

    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
    41
    42
    43
    function  getXMLHttpRequest(){
    	var xhr=null;
        if (window.XMLHttpRequest) { 
            xhr = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) 
        {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
    	return xhr;
    }
     
    function exemple(){
    	document.getElementById("content").innerHTML = "";
    	var xhr = getXMLHttpRequest();
    	xhr.onreadystatechange = handleHttpResponse;
    	var url = "dvd.xml";
    	xhr.open("GET", url, true);
    	xhr.send(null);
    } 
     
    function handleHttpResponse(xhr) {
        if(xhr.readyState == 4){ 
    		if(xhr.status == 200 || xhr.status == 0) {
    			var response = xhr.responseXML;
    			var items    = response.getElementsByTagName("item");
    			var html     = ''; 
    			count        = items.length;
    			for(i = 0; i < count; i++) { 
    				html += '<div class="item">';
    				html += '<h1>' + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + '</h1>';
    				html += '<div class="author">R&eacute;alisateur : ';
    				html += items[i].getElementsByTagName("director")[0].firstChild.nodeValue + '</div>';
    				html += '<div class="price">Prix : ';
    				html += items[i].getElementsByTagName("price")[0].firstChild.nodeValue + ' €</div>';
    				html += '</div>';
    			}
    			document.getElementById('content').innerHTML = html;
    		}else{
    			alert("Error:returned status code"+xhr.status +""+xhr.statusText);
    		}
    	}
    }
    Je te conseille de lire ce tutoriel.

    A+.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonjour Andry.aime
    je suis heureuse de mieux comprendre la structure du fichier.js grâce à ce tutoriel conseillé.
    J'ai donc tout repris comme cet exemple mais ce qui m'étonne c'est que rien ne s'affiche après clic pas même un seul code d'erreur !
    Voulez-vous voir où se situe les problèmes:Ci-joint ce fichier
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>restituer un xml</title>
     
     
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<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
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    	function exemple(){
    	document.getElementById("content").innerHTML = "";
    	var xhr = getXMLHttpRequest();
    	xhr.onreadystatechange = handleHttpResponse;
    	var url = "dvd.xml";
    	xhr.open("GET", url, true);
    	xhr.send(null);
    } 
     
    function handleHttpResponse(xhr) {
        if(xhr.readyState == 4){ //Prêt (toutes les données sont chargées).
     
    		if(xhr.status == 200 || xhr.status == 0) //Le code de la réponse du serveur est:
    //200 -> OK.
    //404 -> Page non trouvée.
    {
    //response=cleanXML(xhr.responseXML.document Element);}}
    			var response = xhr.responseXML;
    			var items    = response.getElementsByTagName("item");
    			var html     = ''; 
    			count        = items.length;
    			for(i = 0; i < count; i++) { 
    				html += '<div class="item">';
    				html += '<h1>' + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + '</h1>';
    				html += '<div class="author">R&eacute;alisateur : ';
    				html += items[i].getElementsByTagName("director")[0].firstChild.nodeValue + '</div>';
    				html += '<div class="price">Prix : ';
    				html += items[i].getElementsByTagName("price")[0].firstChild.nodeValue + ' €</div>';
    				html += '</div>';
    			}
    			document.getElementById('content').innerHTML + = html;
    		}else{
    			alert("Error:returned status code"+xhr.status +""+xhr.statusText);
    		}
    	}
    }
    		</script>
    	</head>
    	<body>
    		<p>
    <a href="javascript:exemple();">cliquer !</a>
    <div id="content"></div>
    </p>
    	</body>
    </html>
    Mes plus vifs remerciements
    Claudine

  16. #16
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    var xhr = getXMLHttpRequest();
    xhr.onreadystatechange = handleHttpResponse;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var xhr = getXhr();//Tu as appelé une fonction qui n'existe pas ;)
    	xhr.onreadystatechange = handleHttpResponse;

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonsoir Andry.aime,
    J'ai corrigé cette erreur, mais apparemment, ce n'est pas la seule car rien ne se passe après le clic. D'autant plus bizarre que j'ai ajouter 2 lignes de code supplémentaire pour affichage dans la DIV du changement d'état ! et toujours rien sans aucun message d'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function handleHttpResponse(xhr) {
        if(xhr_object.readyState == 1)
    	   obj.innerHtml += "connexion établie <br />";
    Puis-je te demander toute ton attention pour débusquer l'erreur?
    Remerciements
    Claudine

  18. #18
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Remplace cette ligne
    xhr.onreadystatechange = handleHttpResponse;
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.onreadystatechange = function () {handleHttpResponse(xhr)};

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    293
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 293
    Points : 95
    Points
    95
    Par défaut
    Bonsoir andry.aime
    Je suis désolée, mais rien ne change au click.
    Pour éviter toute erreur éventuelle de ma part, je joint le fichier actuel:
    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>restituer un xml</title>
     
     
    		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
    		<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
    			}
     
    			/**
    			* Méthode qui sera appelée sur le click du bouton
    			*/
    	function exemple(){
    	document.getElementById("content").innerHTML = "";
    	var xhr = getXhr();
    //xhr.onreadystatechange = handleHttpResponse(xhr);
    	xhr.onreadystatechange = function () {handleHttpResponse(xhr)};
    	var url = "dvd.xml";
    	xhr.open("GET", url, true);
    	xhr.send(null);
    } 
     
    function handleHttpResponse(xhr) {
        if(xhr.readyState== 1)
    	   obj.innerHtml += "connexion établie <br />";
        if(xhr.readyState == 4){ //Prêt (toutes les données sont chargées).
     
    		if(xhr.status == 200 || xhr.status == 0) //Le code de la réponse du serveur est:
    //200 -> OK.
    //404 -> Page non trouvée.
    {
    response=cleanXML(xhr.responseXML.document Element);}}
    			var response = xhr.responseXML;
    			var items    = response.getElementsByTagName("item");
    			var html     = ''; 
    			count        = items.length;
    			for(i = 0; i < count; i++) { 
    				html += '<div class="item">';
    				html += '<h1>' + items[i].getElementsByTagName("title")[0].firstChild.nodeValue + '</h1>';
    				html += '<div class="author">R&eacute;alisateur : ';
    				html += items[i].getElementsByTagName("director")[0].firstChild.nodeValue + '</div>';
    				html += '<div class="price">Prix : ';
    				html += items[i].getElementsByTagName("price")[0].firstChild.nodeValue + ' €</div>';
    				html += '</div>';
    			}
    			document.getElementById('content').innerHTML + = html;
    		}else{
    			alert("Error:returned status code"+xhr.status +""+xhr.statusText);
    		}
    	}
    }
    		</script>
    	</head>
    	<body>
    		<p>
    <a href="javascript:exemple();">cliquer !</a>
    <div id=" "></div>
    </p>
    	</body>
    </html>
    merci pour votre aide
    Claudine

  20. #20
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Je suis désolée, mais rien ne change au click.
    Avec ça, rien d'étonnant...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(xhr.status == 200 || xhr.status == 0) //Le code de la réponse du serveur est:
    //200 -> OK.
    //404 -> Page non trouvée.
    {
    response=cleanXML(xhr.responseXML.document Element);}

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. ASP-Ajax synchro avec le serveur
    Par blueghost dans le forum ASP
    Réponses: 1
    Dernier message: 26/03/2010, 11h01
  2. [AJAX] soucis avec un requête ajax basique
    Par shelko dans le forum AJAX
    Réponses: 12
    Dernier message: 05/03/2010, 12h14
  3. [AJAX] Interaction avec le serveur : AJAX + PHP
    Par kati1985 dans le forum AJAX
    Réponses: 8
    Dernier message: 17/09/2009, 16h09
  4. Réponses: 4
    Dernier message: 05/04/2007, 20h48
  5. Réponses: 7
    Dernier message: 15/08/2006, 01h31

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