Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/10/2011, 17h19   #1
Invité de passage
 
Homme
Consultant MySQL
Inscription : 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 : 1
Points : 1
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 :
1
2
3
4
5
6
7
	$.post("action.php", {
		mode : 'genereApplications'
	}, function (data) {
		 $("input#select_application").autocomplete({
			    source: data
		 });
	});
Puis action.php
Code :
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
Citation:
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
MatMerz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 18h59   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 069
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 069
Points : 45 202
Points : 45 202
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 :
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 :
 $("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 :
 $("#select_application").
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 09h34   #3
Invité de passage
 
Homme
Consultant MySQL
Inscription : 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 : 1
Points : 1
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...
MatMerz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 09h42   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 069
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 069
Points : 45 202
Points : 45 202
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 ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 10h05   #5
Invité de passage
 
Homme
Consultant MySQL
Inscription : 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 : 1
Points : 1
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 :
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 :
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...
MatMerz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 10h19   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 069
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 069
Points : 45 202
Points : 45 202
Citation:
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 :
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 :
source: $.parseJSON(data)
Ou encore:
Code :
1
2
3
4
5
6
$.getJSON( 'action.php', {
		mode : 'genereApplications'
	},
      success(data){$("input#select_application").autocomplete({
			    source: data
		 });})
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 10h26   #7
Invité de passage
 
Homme
Consultant MySQL
Inscription : 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 : 1
Points : 1
YES ! Merci beaucoup, la syntaxe exacte est
Code :
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 !
MatMerz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 10h28   #8
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 069
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 069
Points : 45 202
Points : 45 202
j'ai complété le post, il y a d'autre méthodes possibles cf ci dessus
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h17.


 
 
 
 
Partenaires

Hébergement Web