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

  1. #1
    Membre habitué
    Inscrit en
    novembre 2005
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 626
    Points : 166
    Points
    166

    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
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 321
    Points : 31 280
    Points
    31 280

    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.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  3. #3
    Membre habitué
    Inscrit en
    novembre 2005
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 626
    Points : 166
    Points
    166

    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
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 321
    Points : 31 280
    Points
    31 280

    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...
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  5. #5
    Membre éprouvé
    Homme Profil pro
    chomeur
    Inscrit en
    avril 2015
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : chomeur
    Secteur : Distribution

    Informations forums :
    Inscription : avril 2015
    Messages : 514
    Points : 988
    Points
    988

    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
    13 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2011
    Messages : 13 747
    Points : 33 393
    Points
    33 393

    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
    2 994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : juin 2010
    Messages : 2 994
    Points : 6 491
    Points
    6 491

    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
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

+ 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 Formulaires
    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