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 :

Modif d'une fonction qui fonctionne.


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 406
    Par défaut Modif d'une fonction qui fonctionne.
    Bonjour à tous
    Pourquoi modifier quelquechose qui fonctionne? Parce que je dois l'insérer dans un programme existant.
    Routine qui fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    formulaire.onsubmit= async (e)=> {
        e.preventDefault();
        let response = await fetch('/envoiFormData', {
            method: 'POST',
            body: new FormData(formulaire)   
        });
        let result = await response.text();
        alert(result.message);
    }
    routine qui ne fonctionne pas:
    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
    else if(touche=='ENVOI'){
                let msg= new FormData(formulaire);
                for(pair of msg){
                    if(pair[1]=='') pair[1]='Z';
                }
                async(e) =>{
                    e.preventDefault();
                    let response = await fetch("/envoiFormData", {
                        method: 'POST',
                        body: msg
                    });
                    let result = await response.text();
                    alert(result.message);
                }
            }
    Si quelqu'un peut me mettre sur une piste.
    Merci
    Pour la routine qui fonctionne, le message de retour est 'undifined' alors que le serveur renvoit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req->send(200,"text/plain", "Ok_Post bien recu");

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    dans ta boucle for...of :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(pair of msg){
        if(pair[1]=='') pair[1]='Z';
    }
    tu modifies ta variable locale pair mais en aucun cas le contenu de ta variable msg.

    Pour modifier le contenu d'un objet FormData il existe la méthode set(), c'est celle-ci qu'il faut que tu utilises.

    Ta fonction devrait donc ressembler, par exemple, à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    formElem.onsubmit = (e) => {
      e.preventDefault();
      const formDatas = new FormData(formElem);
      // modification
      for (const [key, value] of formDatas) {
        if (value === "") {
          formDatas.set(key, "Z");
        }
      }
      // affichage pour voir
      for (const [key, value] of formDatas) {
        console.log(key, value);
      }
    };
    Généralement les valeurs vides sont plutôt à gérer côté serveur et d'autre part pourquoi ne pas mettre directement la valeur Z comme valeur par défaut ?


    Pour la routine qui fonctionne, le message de retour est 'undifined' alors que le serveur renvoit
    Ta variable result est une chaine de caractères et non un objet.

  3. #3
    Membre éclairé
    Homme Profil pro
    bricoleur
    Inscrit en
    Octobre 2014
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : bricoleur
    Secteur : Alimentation

    Informations forums :
    Inscription : Octobre 2014
    Messages : 406
    Par défaut
    Merci NoSmoking pour ces conseils.
    Je vais les suivre en gérant les réponses vides côté serveur.

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

Discussions similaires

  1. Une fonction qui ne fonctionne pas dans les deux sens
    Par patricktoulon dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 14/02/2018, 18h34
  2. [XL-2013] Une modification d’une fonction SOMME qui perturbe une recherche
    Par bolide7 dans le forum Excel
    Réponses: 11
    Dernier message: 05/11/2017, 07h53
  3. Réponses: 11
    Dernier message: 16/02/2017, 15h33
  4. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13
  5. [langage] Creer une fonction qui met en majuscule ?
    Par Cyber@l dans le forum Langage
    Réponses: 6
    Dernier message: 04/12/2003, 18h44

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