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 :

POST ou XMLHttpRequest ?


Sujet :

JavaScript

  1. #1
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut POST ou XMLHttpRequest ?
    Bonjour

    J'ai un petit problème au niveau Javascript/Php. J'ai également posté dans le forum PHP et je vais inclure le lien iici

    En simple résumé :

    est-ce que avoir une form qui contient une action de type POST et un bouton SUBMIT peut être remplacée par une div contenant un bouton qui va envoyer une requête htttp de type POST ?

    Est-ce que du point de vue du destinataire (c'est une tierce partie sur un autre site) c'est identique ??



    Merci de vos points de vue / explications

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 442
    Points : 4 945
    Points
    4 945
    Par défaut
    Bonjour,

    Oui, vous pouvez faire ceci avec la fonction fetch par exemple, qui permet de construire et envoyer une requête xmlhttprequest avec les données transmises.

    Le plus important c'est d'attacher un écouteur de clic au bouton correspondant..

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Merci

    En fait c'est pour accrocher des paiements Paypal..

    J'ai une page avec plusieurs objets (2, dont 1 en quantité variable)..

    Le code pour ajouter au panier est :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
      <input type="hidden" name="cmd" value="_s-xclick" />
      <input type="hidden" name="hosted_button_id" value="XXXXX" />
      <input type="hidden" name="currency_code" value="CAD" />
      <input type="image" src="https://www.paypalobjects.com/fr_CA/i/btn/btn_cart_LG.gif" border="0" name="submit" title="PayPal, le réflexe sécurité pour payer en ligne" alt="Ajouter au panier" />
    </form>

    Je suppose que si je transform ceci en :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div>
      <input type="hidden" name="cmd" value="_s-xclick" />
      <input type="hidden" name="hosted_button_id" value="XXXXX" />
      <input type="hidden" name="currency_code" value="CAD" />
      <input type="image" id=ok name=ok alt="Ajouter au panier" onclick=envoi() />
    </div>

    et

    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
    26
    function envoi(){
         var s;
         s = "cmd=\"_s-xclick\" hosted_button_id=\"XXXXX\" currency_code=\"CAD\" submit=true";
         post ("https://www.paypal.com/cgi-bin/webscr",s, yy, zz, true);
    }
     
    function post(url,a,cb,d,erf,sy){var r=gXhr();    
        r.addEventListener("load",function(){
               if(this.status>=200 && this.status<400){
                      if(cb!= null){
                            cb(d,this.responseText);}
                      else 
                          alert("REP "+this.responseText)}
              else{
                   if(erf!=null)erf(this.status+" "+this.statusText);
                  else alert("Erreur réseau "+this.status+" "+this.statusText)}
        });
        r.addEventListener("error",function(){
                     if(erf!=null)erf("Erreur réseau "+this.status+" "+this.statusText);
                     else alert("Erreur réseau "+this.status+" "+this.statusText)
     
        });
        r.open("POST",url,sy);
        r.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        r.send(a);
    }

    ou bien en créant un FormData message...

    Ça marcherait, non ?

    Merci

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 442
    Points : 4 945
    Points
    4 945
    Par défaut
    Bonjour,

    Je vois des trucs qui clochent :
    • Absence des guillemets ou apostrophes autour des valeurs des attributs id et name <input ... id=ok name=ok ... onclick=envoi() />
    • La déclaration de la fonction function post(url,a,cb,d,erf,sy) avec 6 paramètres, mais l'appelle avec 5 seulement post ("https://www.paypal.com/cgi-bin/webscr",s, yy, zz, true);
    • Utilisez des noms de paramètres/variables explicites au lieu de a,cb,d,erf,sy,s,yy,zz


    Apart ça, je pense que ça marcherait oui, mais vous utilisez l'ancienne méthode, maintenant il existe fetch comme je vous l'ai dit.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Bonjour Toufik

    Citation Envoyé par Toufik83 Voir le message
    Je vois des trucs qui clochent :
    • Absence des guilleumets ou apostrophes autour des valeurs des attributs id et name <input ... id=ok name=ok ... onclick=envoi() />
    • La déclaration de la fonction function post(url,a,cb,d,erf,sy) avec 6 paramètres, mais l'appelle avec 5 seulement post ("https://www.paypal.com/cgi-bin/webscr",s, yy, zz, true);
    oui j'ai été vite fait, car c'est pas le coeur de ma question.. J'ai plus de 95000 lignes de code javascript fonctionnelles...

    Citation Envoyé par Toufik83 Voir le message
    • Utilisez des noms de paramètres/variables explicites au lieu de a,cb,d,erf,sy,s,yy,zz
    Minifcation ??? pour quelque chose d'opérationnel c'est essentiel.


    Citation Envoyé par Toufik83 Voir le message
    Apart ça, je pense que ça marcherait oui, mais vous utilisez l'ancienne méthode, maintenant il existe fetch comme je vous l'ai dit.
    Oui je te remercie j'ai vite regardé, et j'approfondirais demain..

    Merci

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2015
    Messages : 41
    Points : 60
    Points
    60
    Par défaut
    L'absence de guillemets autour des valeurs des attributs HTML est une possibilité mais n'est pas recommandé.

    Pour le JS, vous pouvez éviter d'échapper les guillemets avec des antislashs, par exemple en jouant avec les guillemets simples et double, mais ils y a en réalité bien mieux encore : les littéraux de gabarits.

    https://developer.mozilla.org/fr/doc...plate_literals

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

Discussions similaires

  1. [AJAX] XMLHttpRequest et envoi POST
    Par woodyfrance dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 28/02/2008, 15h52
  2. [AJAX] Checkbox, post et XmlHttpRequest
    Par hikwest dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 22/01/2008, 13h10
  3. [AJAX] Checkbox, post et XmlHttpRequest
    Par hikwest dans le forum AJAX
    Réponses: 0
    Dernier message: 22/01/2008, 13h10
  4. XMLHttpRequest en mode POST
    Par Mobius dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/06/2006, 11h12
  5. Transfert de paramètre en POST via XmlHttpRequest
    Par hdd dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/05/2006, 10h02

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