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] PB avec motif récupéré et new RegExp() !


Sujet :

JavaScript

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Par défaut [AJAX] PB avec motif récupéré et new RegExp() !
    Salut à tous,

    Ce que je veux faire est simple: remplacer les occurence de update[0] dans la chaine content...

    Je récupère un résultat d'une page php présenté sous la forme tata|toto

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [...]
    var response = http.responseText;
    var update = new Array();
    if(response.indexOf('|' != -1)) {			
         update = response.split('|');
         varexp = new RegExp(update[0], "g");
         content = '<a href="http://www.tata.com">tata</a>';
         content = content.replace(varexp, update[1]);
         document.write(content);
         }
    [...]
    En indiquant directement les valeurs de update[0] et update[1] (sans récupérer par ajax), ça marche niquel... Mais si je récupère les valeurs par ajax, cela me donne comme résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.toto/tata/g.com">toto/tata/g</a>
    La je ne comprends pas...
    Merci d'avance pour votre aide

  2. #2
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Par défaut
    Je voudrais savoir si certains ont rencontré le même problème et si ils l'ont résolu, comment?

    Merci

  3. #3
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par kakou
    Salut à tous,

    Ce que je veux faire est simple: remplacer les occurence de update[0] dans la chaine content...

    Je récupère un résultat d'une page php présenté sous la forme tata|toto

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [...]
    var response = http.responseText;
    var update = new Array();
    if(response.indexOf('|' != -1)) {			
         update = response.split('|');
         varexp = new RegExp(update[0], "g");
         content = '<a href="http://www.tata.com">tata</a>';
         content = content.replace(varexp, update[1]);
         document.write(content);
         }
    [...]
    En indiquant directement les valeurs de update[0] et update[1] (sans récupérer par ajax), ça marche niquel... Mais si je récupère les valeurs par ajax, cela me donne comme résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://www.toto/tata/g.com">toto/tata/g</a>
    La je ne comprends pas...
    Merci d'avance pour votre aide
    Qu'est ce que ajax a à voir la dedans

    Fait un alert de ton response et de update[0] et update[1] tu verras bien si ça correspond à ce que tu penses ou non...

    Sinon, document.write : pas bon

  4. #4
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Citation Envoyé par denisC
    Sinon, document.write : pas bon
    +1

    Sinon, sache que le 2e argument de replace est un String, pas une regExp...

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Par défaut
    Citation Envoyé par denisC
    Qu'est ce que ajax a à voir la dedans

    Fait un alert de ton response et de update[0] et update[1] tu verras bien si ça correspond à ce que tu penses ou non...

    Sinon, document.write : pas bon
    Salut,
    Ajax a à voir car les valeurs de update[] sont récupérée par httprequest et que c'est uniquement dans ce cas que mon script ne marche pas (j'ai essayé de définir directement les valeurs de update[] dans mon javascript et tout fonctionne.

    J'ai évidemment fait un alert() et cela correspond à ce que j'attends.
    J'ai bien vérifié la sortie du document PHP et il n'y a pas de caractères en trop. De toutes façons il suffit de regarder le résultat du javascript pour voir qu'il y a un problème... bizarre!

    Je n'utilise pas document.write mais innerHTML dans mon script, j'ai ici simplifié la lecture :-)


    Citation Envoyé par FremyCompany
    +1

    Sinon, sache que le 2e argument de replace est un String, pas une regExp...
    Regarde bien mon code, le 2eme argument est un string ;-)



    Merci pour votre aide

  6. #6
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var regExp=null;
    eval("regExp=(" + update[0] + ");")

  7. #7
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Par défaut
    Je ne suis pas un expert javascript, mais je ne vois pas trop ce que cela peut faire...
    Sinon ça me donne "toto is not defined" dans la console javascript.

    Merci pour ton aide

  8. #8
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Citation Envoyé par kakou
    Je ne suis pas un expert javascript, mais je ne vois pas trop ce que cela peut faire...
    Sinon ça me donne "toto is not defined" dans la console javascript.

    Merci pour ton aide
    Que contient update[0] ?

  9. #9
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Par défaut
    Citation Envoyé par FremyCompany
    Que contient update[0] ?
    Oups pardon, il dit "tata is not defined" ! update[0] contient bien tata.
    Je m'embrouille avec mon exemple à la con

  10. #10
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Par défaut
    En fait, j'ai oublié de préciser que si je n'essaye pas d'utiliser l'attribut "g", donc sans faire new RegExp, et en n'utilisant qu' update[] dans la fonction replace, cela marche (enfin il ne remplace que la première occurence).
    Donc au pire si on ne trouve pas de solution je ferais un loop.. c'est moins propre mais ca fonctionnera!

  11. #11
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Et comment obtiens-tu ton tata ?
    Depuis du JS ou du PHP ?

  12. #12
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Par défaut
    Ben JS envoie en GET tata et toto à une page PHP qui se charge d'effectuer des actions en background puis qui renvoie tata et toto à JS (qui le récupère grâce à httprequest)
    JS doit ensuite mettre à jour la page utilisateur pour refléter les actions effectuées par PHP.

  13. #13
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Et pk le js n'envoie pas ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var r=new RegExp("tata","gi");
    escape(r);
    Comme ca tu peux utiliser mon exemple... et les RegExp de PHP étant pareille a celle de JS, je pense que tu peux faire pareil

    le resultat de sortie devrait ressembler à et tu recevrais ceci en PHP

  14. #14
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2002
    Messages : 30
    Par défaut
    ah ben voila ca marche!
    ce problème était quand même assez bizarre!

    Merci pour ton aide très précieuse!

  15. #15
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Citation Envoyé par kakou
    ah ben voila ca marche!
    ce problème était quand même assez bizarre!

    Merci pour ton aide très précieuse!
    De rien !

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

Discussions similaires

  1. [AJAX] problème avec readyState
    Par Booyakha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/04/2006, 16h52
  2. [AJAX] probleme avec innerhtml
    Par GTJuanpablo dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 19/03/2006, 13h21
  3. AJAX : Problème avec les accents...
    Par @drien dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/01/2006, 14h33
  4. [AJAX] Problèmes avec les caractères accentués
    Par marti dans le forum Servlets/JSP
    Réponses: 10
    Dernier message: 26/10/2005, 14h10

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