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] Parser une réponse texte


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut [Ajax] Parser une réponse texte
    Bonjour,

    Je suis actuellement en train de découvrir l'Ajax. Je voudrais appeler une page html de mon site (donc sur le même domaine), et récupérer une partie de celle-ci.

    Je n'ai aucun problème pour récupérer le contenu de la page souhaitée. Cependant, le retour de ma requête est une réponse texte. Je ne vois donc pas comment je pourrais "parser" une partie de cette réponse. Pour un bien, il faudrait que je puisse transformer ce texte en Objet DOM Document. Mais, je ne pense pas que cela soit possible.

    Si quelqu'un pourrait m'éclairer, ou m'indiquer une piste ce serait sympa

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    un responseText est un string ...

    qu'est ce qui te gène ???

    tu peux formatter le responseText en objet Json et l'evaluer en js du coup ta creation DOM en sera facilitée
    tu peux splitter le responseText pour avoir un array js et le parcourrir pour faire des création DOM ...

    Bref plein de possibilités

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    Jamais manipuler d'objet Json, je vais essayer pour voir.

    J'ai regardé un peu sur le site Json, mais je ne vois pas trop comment formater du texte en Json. Aurais-tu un exemple à me montrer ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    Merci pour ton lien. Par contre, la fonction permet juste de construire des éléments DOM à partir d'un objet Json.
    Je ne sais pas comment m'y prendre pour transformer mon texte en Objet Json. Faut-il que je "split" en fonction des "<" et ">" ? Ou, il existe déjà des fonctions permettant de faire cela ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    heu ben coté php tu "rediges" ton objet js avec echo

    et ensuite en js tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjJson=eval("("+xhr.responseText+")")
    c'est pas plus sorcier que ça

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    Le problème c'est que je ne veux pas formater le format retour de ma page. Je veux travailler directement sur l'objet string.

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Alors j'ai pas tout suivi ...
    tu ne peux pas formatter ton string de retour ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '{"obj1":"proptiété","obj2","propriété"}';
    ton string est de quel type? il ressemble à quoi ? il vient d'ou ?

    tu ne peux pas le formatter ?
    il faudra alors le parser ou le spitter ..

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    Non, je ne peux pas formater le format de retour.

    Ce que je récupère est un objet String contenant le code source d'une page HTML.

    Pour un bien j'aimerais créer un Dom Document à partir de la chaine de retour pour pouvoir utiliser la méthode "getElementById" sur la page de retour.

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    alors crée un document fragment ou un div caché et colle le responseText en innerHTML dedans

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    Hmm, effectivement. Par contre, il me semble que document fragment n'est pas disponible sous IE.

    Je vais peut-etre passer par un div caché. Par contre, il faudra que je parse au préalable la réponse text pour changer les id de tous les éléments, parce qu'il ce peut que certains id soit déjà présent.

    J'avais déjà commencer par adopter cette solution, par contre j'ai un petit soucis avec ma regex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var txt = xhr.responseText;
    var uniqId; // Identifiant unique par exemple le timestamp
    txt = txt.replace(/id="(.*)"/gim, 'id="'+uniqId+'$0"');
    Je n'arrive pas à transformer les id de mes éléments html.

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    $1

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    C'est bizarre, même avec l'option "g" il me remplace seulement le premier id . . .

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var txt = xhr.responseText;
    var uniqId; // Identifiant unique par exemple le timestamp
    txt = txt.replace(/(id=".[^"]*)(")/gim, '$1uniqId$2');

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Points : 37
    Points
    37
    Par défaut
    Impeccable, cela fonctionne bien !

    Merci pour l'aide

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

Discussions similaires

  1. Parser une réponse SOAP
    Par RAMIREZ13 dans le forum Android
    Réponses: 2
    Dernier message: 21/07/2011, 18h19
  2. Parser une réponse KSOAP
    Par lotfi-g dans le forum Android
    Réponses: 4
    Dernier message: 30/06/2011, 15h19
  3. parser une réponse KSOAP
    Par lotfi-g dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/06/2011, 11h14
  4. [ORBEON]Parser une réponse SOAP
    Par DonKnacki dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 03/05/2010, 09h24
  5. [Web Service] Parser une réponse SOAP ARRAY
    Par vanmouniren dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 04/02/2010, 13h46

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