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] Lecture de données XML


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [AJAX] Lecture de données XML
    Je suis en train de réaliser un petit outil en PHP/MySQL et Ajax.

    Dans une page, j'ai un champs select avec à coté un champs de type Text et un bouton "envoyer".

    Quand on rentre du texte dans le champs et qu'on clic sur "envoyer", un requete est envoyé au serveur pour enregistrer le texte en BDD puis le script php renvoie en XML le texte et l'id de l'enregistrement. Ces données doivent etre rajouter dans le select.

    Pour ce qui est de l'envoie, tout se passe bien, l'enregistrement en BDD se passe bien et le script renvoie bien du XML.

    Dans mon javascript, quand je fait un "alert(responseXML)", j'ai bien à l'affichage:

    <?xml version='1.0'?>
    <resultat>true</resultat>
    <opt id='1'>directeur</opt>
    un responseXML me renvoie [object XMLDocument]

    mais je me retrouve quand même avec l'erreur:
    Erreur : données incompréhensibles après l'élément de document
    Fichier source : http://127.0.0.1/annuaire/fonctions/...pe_contact.php
    Ligne : 3, Colonne : 1
    Code source :
    <opt id='7'>autre</opt>^
    Ca fait deux heures que je suis dessus à pas trouver quoi faire, merci de m'aider.

    voici le javascript:

    var http_request = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
    http_request.overrideMimeType('text/xml');
    }
    } else if (window.ActiveXObject) { // IE
    try {
    http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    try {
    http_request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {}
    }
    }

    if (!http_request) {
    alert('Abandon Impossible de créer une instance XMLHTTP');
    return false;
    }
    //alert(http_request.readyState);
    parameters=get('new'+emplacement);
    http_request.onreadystatechange = function() { modifyContents(http_request, emplacement); };
    http_request.open('POST', url, true);
    http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    http_request.setRequestHeader("Content-length", parameters.length);
    http_request.setRequestHeader("Connection", "close");
    //alert(parameters);
    http_request.send(parameters);
    }

    function modifyContents(http_request, emplacement) {

    //alert(http_request.readyState);
    //alert(http_request.status);
    if (http_request.readyState == 4) {
    //alert(http_request.status);
    if (http_request.status == 200) {
    var XMLDoc = http_request.responseXML ;
    alert(http_request.responseText);
    alert(XMLDoc);
    var tabresultat= XMLDoc.getElementsByTagName('resultat').item(0);
    var resultat=tabresultat.firstChild.nodeValue;
    alert(resultat);

    var option = XMLDoc.getElementsByTagName("opt");
    for (var i = 0; i < option.length; i++) {
    var tabvaleur = option[i].getElementsByTagName("valeur");
    var valeur=tabvaleur[0].firstChild.nodeValue;
    var tabid = option[i].getElementsByTagName("id");
    var id=tabid[0].firstChild.nodeValue;
    alert(valeur+", "+id);
    }



    //ajouter_choix(emplacement,
    } else {
    alert('Un problème est survenu avec la requête.');
    }
    }

    }
    et le script php:

    <?php
    session_start();
    header( 'Content-Type:text/xml;charset:UTF-8' );
    $typecontact=$_POST['nomtypecontact'];
    $sql_insert_type_contact="insert into annuaire_type_contact values ('', '$typecontact')";
    require("inc_connect_db.php");
    $res_insert_type_contact = mysql_query($sql_insert_type_contact);
    echo("<?xml version='1.0'?>\n");
    if ($res_insert_type_contact){
    $id_type_contact=mysql_insert_id();
    mysql_close($cnx);
    echo("<resultat>true</resultat>\n");
    echo("<opt id='$id_type_contact'>");
    echo(utf8_encode($typecontact));
    //echo("<id>$id_type_contact</id>\n");
    echo("</opt>\n");
    } else {
    echo("<resultat>false</resultat>\n");
    }
    ?>

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    Le problème n'est pas le code javscript ou HTML, mais bien XML.

    XML impose d'avoir un et un seul tag racine. Or dans ce code, il y en a deux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?xml version='1.0'?>
    <resultat>true</resultat>
    <opt id='1'>directeur</opt>
    XML ne consiste pas simplement en la mise en balise de texte, il a quelques restrictions supplémentaires.

    L'idéal pour ce faire serait de modifier le code comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0"?>
    <maBalise>
      <resultat>true</resultat>
      <opt id="1">directeur</opt>
    </maBalise>
    et à vérifier également : XML n'impose-t-il pas l'utilisation de guillemets doubles pour les attributs ?

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci, c'était bien ca.

    J'aurais du m'en appercevoir car j'ai eesayer de faire en retour un xml avec une seulle ligne et ca marchait, pas avec deux.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Points : 1 419
    Points
    1 419
    Par défaut
    De rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Visiteur] [C#] Lecture de données XML, Csv
    Par al2000 dans le forum Design Patterns
    Réponses: 1
    Dernier message: 19/07/2011, 15h09
  2. Réponses: 3
    Dernier message: 22/10/2010, 07h15
  3. ajax lecture dans fichier xml sans serveur
    Par TERRIBLE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/03/2008, 12h19
  4. [AJAX] Recuperer des donnes xml
    Par bourvil dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 28/07/2006, 08h39
  5. [FLASH MX2004] [XML] Lecture de données XML
    Par ZiT dans le forum Flash
    Réponses: 1
    Dernier message: 12/07/2005, 11h51

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