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 et envoi POST


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 29
    Par défaut [AJAX] XMLHttpRequest et envoi POST
    Bonjour à tous,

    J'essaye de mettre à jour les champs d'une base de données en utilisant XMLHttpRequest. J'ai un gros problème c'est que je n'arrive pas à utiliser les variables de mon formulaire dans le programme qui est appelé par xhr_object.open. Il me semblait que lorsque la méthode POST était utilisée, tout les champs du formulaire étaient accessibles dans le programme appelé. Comment faire référence à ces variables ? Je précise que tous les champs du formulaire sont bien dispo dans la fonction JS.
    Je n'ai pas indiqué tout le code du formulaire mais l'essentiel est là.

    Fonction XMLHttpRequest...
    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
    21
    22
    23
    24
    25
     
    function MajParametre(formulaire){
    	var xhr_object = null;		
    	if(window.XMLHttpRequest) // Firefox
    		xhr_object = new XMLHttpRequest();
    	else if(window.ActiveXObject) // Internet Explorer
    		xhr_object = new ActiveXObject('Microsoft.XMLHTTP');
    	else { // XMLHttpRequest non supporté par le navigateur
    		alert('Votre navigateur ne supporte pas les objets XMLHTTPRequest...');
    		return;
    	}
    	pgmPHP = 'DI_reqModifParam.php';
    	xhr_object.open('POST', pgmPHP, true);
    	xhr_object.onreadystatechange = function() {
    		if(xhr_object.readyState == 4){
    	var tmp = xhr_object.responseText.split(';'); 
    	alert(tmp); 
     
     
    		}
    	}
    	xhr_object.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    	var donnees = 'form=';
    	xhr_object.send(donnees);
    }
    Formulaire qui fait appel à la fonction précédente :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <FORM enctype=\"multipart/form-data\" method=\"post\" name=\"ModifParam\" id=\"ModifParam\">
    .
    .
    .
    <INPUT type=\"button\" name=\"BTN_Maj\" ID=\"bouton_valider\"  
    onClick=\"MajParametre(ModifParam);\" title=\"$LGbulleMiseAjour\" value=\"$LGmiseAjour\">
    </FORM>
    Merci de votre aide.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    tu n'envoies pas de valeur avec le paramètre.
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var donnees = 'form=toto';
    ton php devrait récupérer "toto", non ?

    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 29
    Par défaut
    Il me semblait bien que j'avais une lacune la dessus. Je pensais que les données était envoyées automatiquement, comme par magie... Ma VAR 'donnees' doit donc contenir la valeur de tous les champs du formulaire ?

    Merci

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par woodyfrance Voir le message
    Il me semblait bien que j'avais une lacune la dessus. Je pensais que les données était envoyées automatiquement, comme par magie... Ma VAR 'donnees' doit donc contenir la valeur de tous les champs du formulaire ?
    Oui : Ajax ne tient pas compte de la logique "formulaire" ...

    A+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 29
    Par défaut
    Effectivement, ça va beaucoup mieux.

    Merci

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 29
    Par défaut
    Je n'aurais pas d^fermer la discussion tout de suite.
    Je perds tout mes caractères accentués lors du passage des paramètres, ils se transforment en caractères bizarre. Comment puis-je faire pour garder mes accents ?

    Merci

  7. #7
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    encodeURI() devrait règler ça, je pense.

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par woodyfrance Voir le message
    Comment puis-je faire pour garder mes accents ?
    Avec un ?

    A+

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Herode Voir le message
    encodeURI() devrait règler ça, je pense.
    Sûrement mieux, oui ...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 29
    Par défaut
    Je ne sais pas ce qu'il se passe :

    J'ai joint 3 images au message :
    IMG1 = Contenu de ma variable de départ.
    IMG2 = Contenu de ma variable après encodeURI()
    IMG3 = Valeur des données récupérées dans le prog PHP appelé par le JS.

    Toujours le même résultat
    Images attachées Images attachées    

  11. #11
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Côté client, encodeURI() traduit les caractères cibles en Unicode UTF-8. Il faut donc décoder côté serveur - si tu es en ISO-8859-1 ou équivalent. Sous PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res = utf8_decode(urldecode($_POST['res']));

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 29
    Par défaut
    FANTASTIQUE !!!!
    J'étais bien parti sur urldecode() mais je ne l'aurais jamais combiné avec utf8_decode().

    Merci beaucoup.

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

Discussions similaires

  1. Ajax avec jQuery: envoi par POST retour en JSON
    Par band22 dans le forum jQuery
    Réponses: 1
    Dernier message: 14/10/2011, 10h54
  2. Réponses: 3
    Dernier message: 09/08/2011, 13h58
  3. [AJAX] Envoi du POST
    Par ju0123456789 dans le forum AJAX
    Réponses: 4
    Dernier message: 17/02/2010, 12h22
  4. [AJAX]problème d'envoie de données méthode POST
    Par xave dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/07/2006, 16h35
  5. [AJAX] Récupérer paramètre sur POST dans une servlet
    Par _beber85 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 05/04/2006, 11h52

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