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

AJAX Discussion :

[AJAX] Caractères avec les variables GET/POST


Sujet :

AJAX

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [AJAX] Caractères avec les variables GET/POST
    Bonjour,
    J'utilise Ajax pour envoyé au coté serveur (asp) des paramètres qu'en fonction le le résultat est renvoyé.
    Mais, j'ai un problème dans la récupération des variables du coté serveur ( moncode.asp)
    En faite, lorsque j'utilise la méthode POST, lorsque j'envoie par exemple var1=Ecole d'informatique, je reçois au coté serveur Ecoled'informatique , donc pas d'espace
    Et lorsque j'utilise la méthode GET, je reçois Ecole dinformatique c.à.d sans les apostrophes.
    Ce problème ne se pose pas, lorsque je n'utilise pas Ajax et j'utilise tout simplement un formulaire avec action=moncode.asp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     if (sMethod == "GET")
          {
            xmlhttp.open(sMethod, "moncode.asp?"+sVars, true);
            sVars = "";
          }
          else
          {
            xmlhttp.open(sMethod, "moncode.asp", true);
            xmlhttp.setRequestHeader("Method", "POST moncode.asp HTTP/1.1");
            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     
          }
     
          xmlhttp.onreadystatechange = function(){
            if (xmlhttp.readyState == 4 && !bComplete)
            {
              bComplete = true;
              fnDone(xmlhttp);
            }};
         xmlhttp.send(sVars);
    merci por votre aide

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Espaces et apostrophes sont des caractères spéciaux pour les URI, il faut donc les échapper : remplacer les espaces par + ou %20 et remplacer les apostrophes par %27.
    Le plus simple est d'utiliser encodeURIComponent() qui n'oubliera rien.

    Pour le cas du formulaire, c'est le navigateur qui fabrique la requête. Quand il voit ces caractères qui doivent être échappés, il peut donc s'en charger lui-même.

    Mais dans le cas de GET ce serait discutable : c'est le programmeur qui construit la requête, et si le programmeur n'échappe pas ces caractères, c'est peut-être parce qu'il sait ce qu'il fait. Dans le doute c'est fini l'assistanat, il faut faire les choses correctement et puis c'est tout.
    Enfin, ça dépend peut-être des navigateurs.

    Dans le cas de POST c'est normal que le navigateur ne fasse pas les échappements : il ne sait pas que ce que tu envoies est un formulaire. Pour ce qu'il en sait, ça pourrait être ta dissertation de philo en XML.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Oui c'est vrai ça dépend du navigateur, j'ai testé avec Opera , ça marche convenablemnt.
    Pour la fonction encodeURIComponent(var1=valeur1&var2=valeur2) , elle encode meme le symbole egale = et &
    cad
    Inst=ECOLE NATIONALE D’ARCHITECTURE ET D’URBANISME&Univ=LYON
    devient
    Inst%3DECOLE%20NATIONALE%20D%E2%80%99ARCHITECTURE%20ET%20D%E2%80%99URBANISME%26Univ%3DLYON
    et du faite du coté serveur (asp) je ne peut pas recupérer mes variable Inst et Univ
    es ce Normale??
    merci por votre aide

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Oui, c'est le comportement attendu de encodeURIComponent() qui encode l'intégralité de la chaine passée en paramètre comme s'il s'agit d'un unique élément. Si tu passes l'ensemble de la queryString, alors il faut utiliser encodeURI().
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. Réponses: 10
    Dernier message: 13/05/2014, 17h06
  2. [AJAX] Passer toutes les variables GET dans un appel AJAX
    Par wbulot dans le forum jQuery
    Réponses: 1
    Dernier message: 17/04/2014, 11h59
  3. problème avec les variables de la méthode GET
    Par will97 dans le forum Langage
    Réponses: 11
    Dernier message: 11/12/2007, 14h43
  4. Réponses: 4
    Dernier message: 02/03/2007, 22h33
  5. [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