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 et XMLHttpRequest : Methode GET ou POST


Sujet :

AJAX

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut Ajax et XMLHttpRequest : Methode GET ou POST
    Bonjour à tous,

    Mon problème est le suivant s'il vous plait :

    J'ai mon code PHP qui lance la sauvegarde d'informations via des onclick, jusque la pas de souci.

    Mais le problème est bizarre, si dans mon code javascript je ne rempli pas les variables en POST ET en GET, la fonction ne marche pas, alors qu'il me semble c'est bien une méthode ou l'autre à la base ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function envoi (idA,client,trian,nb) {
    	idC= 'S'+idA;
    	if (idA=="toto"){if(document.getElementById(idA).checked == true){idC = '1';}else{idC = '0';}nb="0";}
    	else { var idC = document.getElementById(idA).value;}
    	if (idA=="commentaire") {while(idC.indexOf("\n")>0){idC = idC.replace("\n","<br>");}idC = idC.replace(/[+]/g, "%2B");}
     
    	var xhr_object = new XMLHttpRequest();
    	xhr_object.open("GET", "sauve.php?client="+client+"&trian="+trian+"&nb="+nb+"&champ="+idA+"&"+idA+"="+idC, true);
    	xhr_object.onreadystatechange = function() {if(xhr_object.readyState == 4) {}}
    	xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    	var data = "client="+client+"&trian="+trian+"&nb="+nb+"&champ="+idA+"&"+idA+"="+idC;
    	xhr_object.send(data);
    	var idC = document.getElementById(idA); idC.style.border="2px solid #00FF00";
    }

    Ensuite, j'ai actuellement un dépassement de ressources avec mon hébergeur OVH, je me demandais qu'elle choix de gestion des variables était moins consommateur de ressources, la méthode POST ou la méthode GET.

    Merci pour toute l'aide que vous pourrez m'apporte.

    Excellente journée a tous.

    Guillaume

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	xhr_object.open("POST", "sauve.php?client="+client+"&trian="+trian+"&nb="+nb+"&champ="+idA+"&"+idA+"="+idC, true);
    ici, des variables qui seront récupérées en $_GET

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	var data = "client="+client+"&trian="+trian+"&nb="+nb+"&champ="+idA+"&"+idA+"="+idC;
    	xhr_object.send(data);
    ici, celles récupérées en $_POST (les même variables !)

    Pourquoi TU fais les 2 ?
    Toi seul peux répondre.

    Quant à ton "problème est bizarre", on ne peux pas répondre, vu que tu ne montres pas le code de traitement : sauve.php.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 653
    Points : 183
    Points
    183
    Par défaut
    Bonjour jreaux62,

    en me relisant je viens de m’apercevoir que j'avais laissé POST au lieu de GET.

    pffff une nuit blanche et on écrit des conneries.

    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    En POST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	xhr_object.open("POST", "sauve.php", true);
    ...
    	var data = "client="+client+"&trian="+trian+"&nb="+nb+"&champ="+idA+"&"+idA+"="+idC;
    	xhr_object.send(data);
    Je n'ai jamais trouvé l'intérêt d'utiliser GET...
    Dernière modification par Invité ; 07/09/2019 à 08h10.

  5. #5
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 726
    Points : 1 631
    Points
    1 631
    Par défaut
    jour

    Avec get de mémoire les donnés sont mises a la suite de l'url et send reste vide


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var data = "client="+client+"&trian="+trian+"&nb="+nb+"&champ="+idA+"&"+idA+"="+idC;
     
    xhr_object.open("GET", "sauve.php"+data, true);
     
    xhr_object.send();

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 102
    Points : 44 856
    Points
    44 856
    Par défaut
    Bonjour,
    Avec get de mémoire les donnés sont mises a la suite de l'url et send reste vide
    exact sans oublier le ? en début de paramètres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr_object.open("GET", "sauve.php?" + data, true);

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Je n'ai jamais trouvé l'intérêt d'utiliser GET...
    C’est une question de sémantique, ça peut être important si on met en œuvre un service REST. Comme indiqué sur Wikipédia, GET est préférée si la requête ne modifie pas l’état du serveur (simple consultation de données) ; au contraire, POST est un meilleur choix si la requête modifie quelque chose, typiquement un enregistrement dans une base de données.

    Un avantage de GET est le cache. Les requêtes faites avec POST, et les réponses associées, ne sont jamais mises en cache.

    Citation Envoyé par kaolivier Voir le message
    Bonjour à tous,
    Bonjour kaolivier,
    vu que ta requête est envoyée à un script appelé sauve.php, je pense que c’est la sémantique de POST qui s’applique ici.
    Une chose qui interfère peut-être dans les paramètres envoyés, c’est la présence éventuelle de caractères &. Par précaution, je te conseille d’échapper systématiquement les données avec encodeURIComponent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var xhr_object = new XMLHttpRequest();
    xhr_object.open("POST", "sauve.php", true);
    xhr_object.onload = function() {
      // TODO
    };
    xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    var data =
      "client=" + encodeURIComponent(client) +
      "&trian=" + encodeURIComponent(trian) + 
      "&nb="    + encodeURIComponent(nb) +
      "&champ=" + encodeURIComponent(idA) +
      "&" + encodeURIComponent(idA) + "=" + encodeURIComponent(idC);
    xhr_object.send(data);
    D’ailleurs, ça rend superflue ton instruction idC = idC.replace(/[+]/g, "%2B"); plus haut.
    Tu peux utiliser la console en mode réseau (networking) pour examiner les requêtes et leurs paramètres.

    Autre chose, à la première ligne de ta fonction, la variable idC n’est pas déclarée, elle devient donc accidentellement globale. Je te conseille de prendre l’habitude d’utiliser le mode strict.

    Citation Envoyé par kaolivier Voir le message
    Ensuite, j'ai actuellement un dépassement de ressources avec mon hébergeur OVH, je me demandais qu'elle choix de gestion des variables était moins consommateur de ressources, la méthode POST ou la méthode GET.
    Le dépassement de ressources a plus à voir avec un script PHP qui consomme trop de temps de CPU ou trop de mémoire. Il peut y avoir une boucle infinie qui traîne quelque part, ou bien une requête SQL trop lourde. Dans ton interface de gestion OVH, tu as moyen de voir les statistiques de tes pages, utilise cet outil pour voir quels scripts sont en cause. Ce guide t’aidera peut-être

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

Discussions similaires

  1. [AJAX] AJAX : GET vs POST
    Par tryan dans le forum AJAX
    Réponses: 4
    Dernier message: 17/12/2012, 10h03
  2. [iOS 4.x] Requête HTTP Methode GET ou POST
    Par salma.mathlouthi dans le forum Objective-C
    Réponses: 0
    Dernier message: 05/10/2012, 15h45
  3. [AJAX] différence GET ou POST
    Par caro71ol dans le forum AJAX
    Réponses: 8
    Dernier message: 28/01/2011, 10h51
  4. methode GET et POST
    Par Hisander dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 25/10/2007, 16h53
  5. Méthodes GET / POST
    Par KeKeMaN dans le forum Langage
    Réponses: 8
    Dernier message: 17/05/2006, 12h08

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