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] xmlHttprequest echappement ou d'encodage


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 16
    Par défaut [AJAX] xmlHttprequest echappement ou d'encodage
    Bonjour,

    J'ai quelque problème pour transmettre certaine variable à un script php avec xmlHttpRequest. tout d'abord voila le petit script que j'ai écrit pour simplifier la présentation de mon programme.

    <html>
    <head>
    <SCRIPT src="./include/ajax.js" type="text/javascript"></script>
    <SCRIPT>
    function valider() {
    xhr=getXhr()
    xhr.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
    reponse=xhr.responseXML;

    var root = reponse.getElementsByTagName('rep').item(0);
    alert(root.getElementsByTagName('text').item(0).firstChild.nodeValue);
    alert(root.getElementsByTagName('text2').item(0).firstChild.nodeValue);
    }
    }

    var documentxml = document.implementation.createDocument("", "", null);
    var testnode = documentxml.createElement('test');
    var nom = documentxml.createElement('nom');

    testnode.appendChild(document.createTextNode(document.getElementById('test').value));
    nom.appendChild(testnode);

    documentxml.appendChild(nom);
    var serializer = new XMLSerializer();
    var xml = serializer.serializeToString(documentxml);

    postDataAsynchronous("antenne2.php","xml="+xml+"&test="+document.getElementById('test').value,xhr);
    }
    </script>
    </head>
    <body>
    <input type="text" id="test">
    <input type="button" value="OK" onclick="valider()">
    </form>
    </form>
    </body>
    </html>
    et la page du serveur

    <?
    header('Content-Type: text/xml');

    $dom = new DomDocument();
    $dom->loadXML($_POST['xml']);
    $nom=$dom->getElementsByTagName('nom')->item(0)->firstChild->nodeValue;
    $test=$_POST['test'];
    echo "<rep><text>$nom</text><text2>$test</text2></rep>";

    ?>
    La page html transmet simplement un chaine de caractère au serveur, qui lui renvoye aussitot. Le problème ne se situe pas dans l'implémentation mais dans le fait que certaine chaine de caractère sont modifié lors de la réception par le serveur de variable client.

    Par exemple : si j'essaye de transmettre la chaine %00 , le serveur me renvoie la chaine \0 ou encore 00%77 donne 00w.

    a noter aussi que si transmet 00%999 le script php donne l'erreur suivante

    <b>Warning</b>: DOMDocument::loadXML() [<a href='function.DOMDocument-loadXML'>function.DOMDocument-loadXML</a>]: Input is not proper UTF-8, indicate encoding !
    Edit pour l'erreur php utf8_encode() corrige le problème mais renvoye toujours des chaines bizarres

    Bref j'ai du mal a comprendre l'origine du problème, donc si vous avez des pistes

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Par défaut
    Par défaut, les données XML sont en UTF-8. Hors t'as BDD est probablement configurer pour stocker du Latin-1. Donc il faut préciser dans ton fichier XML que tu utilise du Latin-1 et pas de l'UTF-8 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    header('Content-Type: text/xml;charset=iso-8859-1');
     
    echo '<?xml version="1.0" encoding="iso-8859-1"?>';
    Ca devrait fonctionner.

Discussions similaires

  1. [AJAX] XMLHttpRequest fonctionne pas dans ie
    Par tchoukapi dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 27/09/2006, 11h45
  2. [ajax] XMLHttpRequest et formulaire(<input type='file'>)
    Par Are-no dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/08/2006, 20h22
  3. [AJAX] XMLHTTPREQUEST ne se met pas à jour :-/
    Par franckarts dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/08/2006, 18h11
  4. [AJAX] XMLHttpRequest en parallèle
    Par narkhor dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/07/2006, 09h57

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