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] Passer des données avec caracteres speciaux


Sujet :

JavaScript

  1. #1
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut [AJAX] Passer des données avec caracteres speciaux
    Bonjour,

    J'utilise AJAX pour effectuer des requêtes sur une base de données.
    Mon souci est le suivant : je dois envoyer des chaines de caracteres qui peuvent contenir toutes sortes de caractères (sauf des caractères qui n'ont aucun sens pour une phrase de la vie courante comme par exemple : $ ¤ | ~ µ)

    Voici la partie de mon code qui envoie les données au serveur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var chaineParam = "act=updTraitOrg&id=" + document.forms[0].u.value + "&tr=" + document.forms[0].i.value + "&rg=" + document.forms[0].id.value + "&fy2=" + document.forms[0].fy2.value ;
    	xhr.open("GET","../../includes/serveurPage.php?" + chaineParam , true);
    Sachant que par exemple document.forms[0].id.value peut contenir des données du genre : "identification d'un élément :"

    (commme vous pouvez le constater on y trouve des : , ' , é)

    Avez-vous une solution pour passer ce genre de données à la page PHP sans qu'il y ait le moindre problème ?

    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    escape unescape ... ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    Citation Envoyé par SpaceFrog
    escape unescape ... ?
    Pourrais-tu détailler ? Merci.

  4. #4
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    J'ai bien compris comment faire un escape du cote JS, mais comment récupérer d'un point de vue PHP ?

  5. #5
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    Parfait parfait
    Mais comment bosser avec ces données une fois reçu par le serveur (via la page PHP) ?
    la fonction unescape a peut-être un équivalent PHP...

  7. #7
    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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    j'ai pas testé si c'était compatible entre js et php sinon il reste MD5
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    php désencode automatiquement l'url.... si tu as ?x=%20 en php tu recois bient $_GET["x"]==" "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    escape = url_encode
    unescape = url_decode
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  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 637
    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 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    donc escape unescape est bien compatible de javascript à php ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre averti Avatar de linar009
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    497
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 497
    Points : 323
    Points
    323
    Par défaut
    Ecoutez j'ai bien l'impression qu'avec urldecode en PHP ça a l'air de fonctionner.

    Je vous remercie pour votre aide SpaceFrog et Fremy !
    En plus, d'une rapidité époustouflante !

  12. #12
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    salut,

    petit remontage de post (merci google)

    je galere sur une appli ajax/php justement

    je dois compter les caracteres d un texte passé dans un formulaire et les caracteres speciaux me font galerer..

    en effet dans mon appli un signe € compte bien pour un caractere, j ai beau passer un urldecode , mon strlen de la chaine me sort 6 caracteres.

    par contre si je fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $chaine=str_replace('%u20AC','€',$chaine);
    j ai bien un seul caractere, mais le truc c est que mon calcul est faux a cause d autre caractere que je cherche encore a identifier..

    connaitriez vous un moyen fiable de corriger ce probleme ?

  13. #13
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    je suis obligé de rajouter des lignes comme celle la :

    $out=str_replace('%u2019',"'",$out);

    le caractere est une apostrophe contenu dans un document pdf !!

    j ai essayé un utf8_decode mais ca fonctionnait pas

    comment je pourrais m en sortir ?, je peux pas str_replacer tout les car unicode succeptibles de se trouver la quand meme..

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    urlencode
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  15. #15
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    non , fremy, relis mon post, j utilise deja escape en js et urldecode du coté php, ca me permets par de recuperer les caracteres codés en unicode


    mon but etant de compter les caractères, je ne retrouve avec un symbole € par exemple, qui est compté pour plusieurs caractères, du fait du code %uxxx

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 289
    Points
    3 289
    Par défaut
    Dans l'autre sens : urldecode / unescape...

    Mais je ne suis pas sûr de te suivre...
    Fremy
    Pour vos développements Web et une navigation agréable, le tout gratuit :
    1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
    2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey

  17. #17
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    oui , lol ca je sais

    mon probleme (encore une fois)


    -> un champ de formulaire , un requete ajax avec escape

    si je tappe "€" par exemple dans le champ

    de l autre coté PHP / urldecode

    je dois calculer le nombre de caracteres :

    strlen($chaine) (soit strlen('€') ) me donne 6 au lieu de 1..


    pourquoi ??

    en fait au lieu de recevoir € je recois %u20AC !!

  18. #18
    Membre averti Avatar de venomelektro
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2004
    Messages : 521
    Points : 316
    Points
    316
    Par défaut
    je poste la démonstration de mon probleme , pitié aidez moi j ai passé mon week end sur ces problemes d encodage

    Citation Envoyé par html
    <html><head>
    <body>
    <script type='text/javascript'>
    function getObj(name) {
    var ns4 = (document.layers) ? true : false;
    var w3c = (document.getElementById) ? true : false;
    var ie4 = (document.all) ? true : false;
    if (ns4) return eval('document.' + name);
    if (w3c) return document.getElementById(name);
    if (ie4) return eval('document.all.' + name);
    return false;
    }

    var req = null;

    function Ajax() {

    getObj("result").innerHTML="chargement...";

    var data = getObj("data").value;

    var url="strlen.php?data=" + escape(data);

    try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch(e) {
    try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
    catch(oc) { req = null; }
    }
    if (!req && typeof XMLHttpRequest != "undefined") { req = new XMLHttpRequest(); }

    if (req != null) {
    req.onreadystatechange = processChange;
    req.open("GET", url, true);
    req.send(null);
    }
    }

    function processChange() {

    if (req.readyState == 4 && req.status == 200) {
    getObj("result").innerHTML = req.responseText;
    }
    }
    </script>
    <form action=''>
    <input type="text" name='data' value='€' />
    <input type="button" value='click me' onclick='Ajax();' />
    </form>
    <div id='result'>...........</div>
    </body></html>

    du coté php

    Citation Envoyé par PHP
    <?php


    echo "strlen(urldecode(\$_GET['data'])=".strlen(urldecode($_GET["data"]));

    ?>

    chez moi j ai un beau 6 qui s affiche dans mon div , or je voudrais bien un 1 (pour un caractere)

  19. #19
    Membre du Club
    Profil pro
    dbadmin et dev web magento
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dbadmin et dev web magento

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Points : 56
    Points
    56
    Par défaut
    impréssionant en effet

    mais ça ne vient pas de ta requette ajax mais de php :

    $e = '€';
    echo strlen($e); // affiche 3
    ça doit venir du moteur de gestion des caractères qui ne doit pas prendre en conte les caractères multi-octets.
    même avec mb_strlen ça ne marche pas.

    c'est dev par des ricains ça c'est sur !

    en passant je veux pas critiquer mais j'ai pas pu mettre mon bout dans code dans les balise CODE parce que le parser du hub me transforme mon signe € en & # 8 3 6 4 ; et j'ai mis des espace parsqu'il fait le contraire ici... pas très charmant tout ça.

  20. #20
    Invité
    Invité(e)
    Par défaut
    venomelektro > PHP décode en effet automatiquement les paramètres (comme le disait FremyCompany).

    Mais à condition de ne pas lui envoyer du %uXXXX donc de ne pas utiliser javascript:escape().

    Utilise plutôt javascript:encodeURIComponent qui, lui, fait le codage classique %E2%82%AC pour ton par exemple.

    Voici quelques outils qui peuvent aider dans ce genre de problèmes :


    PS. Utilisez plutôt $_REQUEST["momparam"] que $_GET car ça fonctionne à la fois pour les requêtes en GET et en POST.

    PPS. € = %u8364 = € = %E2%82%AC
    Dernière modification par Invité ; 09/10/2008 à 11h37. Motif: URL: Changement de domaine

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

Discussions similaires

  1. [AJAX] Récupération régulière des données avec AJAX
    Par MehrezLabidi dans le forum jQuery
    Réponses: 1
    Dernier message: 26/09/2015, 15h49
  2. Réponses: 1
    Dernier message: 10/09/2014, 14h49
  3. [MVC] recupération des données avec ajax
    Par hedibox dans le forum Spring Web
    Réponses: 1
    Dernier message: 20/05/2014, 12h21
  4. [MySQL] recup de données avec caracteres speciaux dans value
    Par rvm31 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 28/10/2012, 10h25
  5. Réponses: 13
    Dernier message: 20/03/2003, 08h11

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