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

jQuery Discussion :

Confusion méthodes POST et GET


Sujet :

jQuery

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant MySQL
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MySQL
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Confusion méthodes POST et GET
    Bonjour à tous, voici mon petit problème

    Dans le document ready de mon script js principal, je cherche a charger des données contenues en base dans un input jqueryui autocompletion.
    Je procède ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	$.post("action.php", {
    		mode : 'genereApplications'
    	}, function (data) {
    		 $("input#select_application").autocomplete({
    			    source: data
    		 });
    	});
    Puis action.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if ($_POST['mode'] == "genereApplications") {
    	$applis = $t->getApplications();
    	$ret =  '[';
    	foreach ($applis as $appli) {
    		$ret .= '"'.$appli['lib'].'", ';
    	}	
    	$ret = substr($ret,0,-2);
    	echo $ret;
    }
    Il se trouve que lorsque je tape quelquechose dans mon input "autocompletionné" et que je le crois rempli de toutes les valeurs requetées, j'ai dans la console une erreur
    GET http://localhost/Oceane_xls/[%22val1%22,%22val2%22,%22val3%22,%22val4%22]?term=t 403 (Forbidden)
    Et ce a chaque fois que je tape quelquechose dans mon input...

    Ma question est simple : pourquoi utilise-t-il la méthode GET et pourquoi cherche-t-il a regénérer l'input a chaque saisie dans le champ?

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    tu n'oublies pas le ] fermant de ton string array ?
    POur plus de securité au niveau du string en retour je passe par un array implodé et json_encodé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if ($_POST['mode'] == "genereApplications") {
    	$applis = $t->getApplications();
    	$ret = array();
    	foreach ($applis as $appli) {
    		$ret []=$appli['lib'];
    	}	
    	$ret = implod(',',$ret);
    	echo json_encode($ret);
    }
    Accessoirement:
    ton selecteur est redondant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $("input#select_application").
    un id etant unique sur la page
    ton selecteur ne peut pointer sur autre chose que l'id , pas besoin de preciser davant que c'est un input car aucun autre element de la page ne porte le même id !
    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $("#select_application").

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant MySQL
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MySQL
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse, en effet j'avais oublié un ] mais cela était du au fait que j'avais fait quelque tests avant de poster, ca ne marchait quand même pas.

    En terme de sécurité, effectivement ta solution est beaucoup plus propre, et je t'en remercie.

    En ce qui concerne mon problème principal, à savoir la méthode POST qui se "transforme" en GET, toujours pas d'avancée...

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    a prioiri cela provient du core d'autocomplete ...
    il faudrait entrer dans le code jquery ui je ne sais pas comment il fonctionne.

    Mais en fait là tu lances un post et tu demandes l'auto complete sur le callback .

    Je connais peu l'autocomplete de Jquery UI, mais à mon avis tu initialises mal l'autocomplete sur ton champs.

    Quelle est la source de l'auto complete ?
    là tu mets un array en source au retour du $.post
    et encore tu ne précises pas que le datatype json de ton post ce qui fait qu'à mon avis le retour est un string ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant MySQL
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MySQL
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    La source en terme de données c'est une base MySQL, en terme informatique c'est http://docs.jquery.com/UI/Autocomplete#option-source

    A priori je peux passer un string, un array (javascript j'imagine)...

    Alors là j'ai une petite avancée, le code est devenu coté php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	$applis = $t->getApplications();
    	$ret = array();
    	foreach ($applis as $appli) {
    		$ret []='"'.$appli['lib'].'"';
    	}	
    	$ret = implode(',',$ret);
    	echo json_encode($ret);
    Et coté javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     $("#select_application").autocomplete({
    			 source : [data] });
    	});
    Alors la mon autocomplete marche, mais j'ai un seul résultat, une immense chaine avec tous les éléments de ma bases que je voudrais séparés...

    Je pense que les crochets autour ne data ne sont pas la solution car il va prendre ca pour un seul et unique élément du tableau.

    J'ai essayé avec source : ["val1", "val2", "val3"] en dur et cela marche très bien ! C'est déjà ca. C'est un problème de typage de variable a passer je pense...

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    et encore tu ne précises pas que le datatype json de ton post ce qui fait qu'à mon avis le retour est un string ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $.post("action.php", {
    		mode : 'genereApplications'
    	}, function (data) {
    		 $("input#select_application").autocomplete({
    			    source: data
    		 });
    	},
            dataType: 'json');
    Ou si tu ne precises pas le datatType:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    source: $.parseJSON(data)
    Ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $.getJSON( 'action.php', {
    		mode : 'genereApplications'
    	},
          success(data){$("input#select_application").autocomplete({
    			    source: data
    		 });})

  7. #7
    Candidat au Club
    Homme Profil pro
    Consultant MySQL
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant MySQL
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    YES ! Merci beaucoup, la syntaxe exacte est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	$.post("action.php", {
    		mode : 'genereApplications'
    	}, function (data) {
    		 $("input#select_application").autocomplete({
    			    source: data
    		 });
    	}, "json");
    Je ne connaissais pas ce paramètre de $.post, merci d'avoir suivi mon problème et bonne journée !

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    j'ai complété le post, il y a d'autre méthodes possibles cf ci dessus

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2014, 21h04
  2. [JSP] Méthode post entre 2 jsp
    Par SteelBox dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 13/03/2009, 01h20
  3. les méthodes POST et GET
    Par Invité dans le forum Débuter
    Réponses: 5
    Dernier message: 12/02/2008, 17h14
  4. [HTTP] Syntaxe méthode POST
    Par Gruik dans le forum Développement
    Réponses: 3
    Dernier message: 26/07/2003, 17h12

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