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 :

[AJAX] autocompl�tion avec Ajax


Sujet :

JavaScript

  1. #1
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut [AJAX] autocompl�tion avec Ajax
    Bonjour,

    J'effectue un module de recherche avanc�e pour mon site.
    Je g�re 3 types de documents : notices, br�ves et illustrations.
    L'interface "d'accueil" est donn�e sur l'image1 donn�e en PJ.
    L'utilisateur peut ajouter les crit�res qu'il souhaite par le menu d�roulant.

    Je g�re les champs ajout�s selon 2 m�thodes : une avec une liste directe des champs obtenu (m�thode addSelection), et une autre avec l'autocompl�tion (m�thode addAutocompletion).

    Je voudrais g�rer la recherche par commune par l'autocompl�tion.
    Mon probl�me : ma m�thode fonctionne pour les notices, mais pas pour les br�ves ou les illustrations (j'expose ici surtout le probl�me avec les br�ves).
    Cf image2 et image2bis.

    J'ai install� Firedebug, et on voit bien que dans le cas des br�ves, la requ�te Ajax est vide.

    J'ai essay� de tester la recherche par commune avec mon autre m�thode : addSelection (Cf image3) et l� pas de probl�mes, �a marche avec les notices, les br�ves et les illustrations. C'est pourquoi je pense que le probl�me vient d'Ajax.

    Je ne comprends pas pourquoi mon autocompl�tion ne fonctionne pas avec mes br�ves. Quelqu'un a une id�e ?

    Mon code Javascript (version simplifi�e):
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    //J'attends que la page soit chargée
    var n=0;
    Event.observe(window,'load', initEventListener);
     
    // initialisation : on surveille les clic de l'utilisateur
    function initEventListener() {
    	Event.observe('add_button', 'click', addField);
    	Event.observe('valid', 'click', validForm);
    }
     
    //J'ai simplifié ma fonction, mais je n'ai pas que les communes dans ma liste.
    function addField() {
    	var champ = $F("add_field");
     
            if (champ == 'fcommune') { //Champ commun : selon les cases cochées, on rajoute les choix (c'est là que si je fais AddSelection aulieu de addAutocompletion, ça marche...
    		box = document.getElementById('notices');
    		if(box.checked){
    			addAutocompletion('fcommune', "Commune (notices)");
    		}
    		box = document.getElementById('breves');
    		if(box.checked){
    			addAutocompletion('fbrcommune', "Commune (brèves)");
    		}
    		box = document.getElementById('illus');
    		if(box.checked){
    			addAutocompletion('ficommune', "Commune (illustrations)");
    		}
    	}
     
     
     
    // ajout d'un champ d'autocomplétion : d'abord je rajoute mes champs pour le "graphique" ensuite je fais ma requête Ajax
    function addAutocompletion (champ, intitule) {
    	tbody = $('ajout');
    	tr = Builder.node('tr', {id: n+'_tr'}, [
    			addBoolean(champ),
    			Builder.node('td',[intitule]),
    			Builder.node('td',[
    				Builder.node('input', {id: n+'_'+champ+'-choice', name: n+'_'+champ+'-choice', type: 'text', value: '', size: '50'}),
    				Builder.node('div', {id:'suggestion', className: 'autocompletion recherche_champ', style:'display:none'})
    			]),
    			Builder.node('td',[
    				Builder.node('select', {
    					className: 'choix',
    					name: n + '_' + champ + '-chosen', 
    					id:n + '_' + champ + '-chosen', 
    					style: 'width: 100%; max-width: 100%;',
    					size: 5,
    					multiple: 'true',
    					className: 'recherche_liste',
    					onclick: 'delOption('+n+',\''+champ+'\',0)'
    				})
    			]),
    			Builder.node('td', [
    				Builder.node('input', {className: 'bouton', type: 'button', value: '-', onclick: 'removeElement('+n+')'})
    			])
    		]);
    	tbody.appendChild(tr);
    	var params = 'field='+champ+'&id='+n+'_'+champ+"-choice";
    	autocompletion = new Ajax.Autocompleter(n+'_'+champ+'-choice',
    						'suggestion',
    						'autocompletion',
    						{updateElement: updateList,
    						parameters: params});	
    }
     
     
     
    // mise à jour de la liste li
    function updateList(li) {
    	var id = li.up('div').previous().id;
    	Field.clear(id);
    	var select = $(id.replace("-choice", "-chosen"));
    	var text = li.down("span.value").innerHTML;
    	addOption(select,text);
    }
     
     
    // Ajout d'une option
    function addOption(select, text) {
    	var suivant = null;
    	var optionExist = false;
    	for(var i=0; i<select.options.length; i++) {
    		if(select.options[i].value == text) {
    			optionExist = true;
    			break;
    		} else if(select.options[i].value.toLowerCase() > text.toLowerCase()) {
    			suivant = select.options[i];
    			break;
    		}
    	}
    	if(!optionExist) {
    		option = Builder.node('option', {value: text, selected: 'selected'},[text]);
    		if(suivant !== null) {
    			select.insertBefore(option,suivant);
    		} else {
    			select.appendChild(option);
    		}
    	}
    }
     
     
    //Pour info, ma méthode addSelection : 
    // ajout une liste à sélection
    function addSelection (champ, intitule) {
    	tbody = $('ajout');
    	tr = Builder.node('tr', {id: n+'_tr'}, [
    			addBoolean(champ),
    			Builder.node('td',[intitule]),
    			Builder.node('td', [
    				Builder.node('select', {
    					name: n + '_' + champ + '-choice', 
    					id:n + '_' + champ + '-choice', 
    					style: 'width: 100%; max-width: 100%;',
    					size: 5,
    					multiple: 'true',
    					onclick: 'swap('+n+',\''+champ+'\',0)'
    				})
    			]),
    			Builder.node('td', [
    				Builder.node('select', {
    					name: n + '_' + champ + '-chosen', 
    					id:n + '_' + champ + '-chosen', 
    					style: 'width: 100%; max-width: 100%;',
    					size: 5,
    					multiple: 'true',
    					className: 'recherche_liste',
    					onclick: 'swap('+n+',\''+champ+'\',1)'
    				})				
    			]),
    			Builder.node('td', [
    				Builder.node('input', {className: 'bouton', type: 'button', value: '-', onclick: 'removeElement('+n+')'})
    			])
    		]);
      	tbody.appendChild(tr);
      	var num = n; /* afin d'éviter le décalage entre la variable global n et le temps de réponse d'ajax */
     
    	ajax = new Ajax.Request('listTerms.ajax', 
    		{
    			method: 'post',
    			parameters: $H({'field': champ}).toQueryString(),
    			onSuccess: function(request) {
    				options = request.responseText.substring(request.responseText.indexOf("<select>")+8,request.responseText.indexOf("</select>")-1);
    				$(num + '_' + champ + '-choice').update(options);
     
    			},
    		}
    	);
     
    }
    S'il vous faut d'autres renseignements, n'h�sitez pas .
    Merci d'avance � ceux qui r�fl�chiront � mon probl�me.
    Fichiers attach�s Fichiers attach�s

  2. #2
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut
    Petit up car je suis toujours bloqu�e sur ce probl�me, et je suis toujours � court d'id�e...
    La moindre piste ou petite id�e pourrait m'aider, svp, n'h�sitez pas � intervenir !

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Par d�faut
    Salut, question qui a l'air idiote mais ne l'est p-e pas tant que �a :
    es-tu sure de ton code serveur et/ou des param�tres que tu lui envoies ?

    Si tu n'as aucune r�ponse dans un cas mais des r�ponses dans d'autres, le probl�me vient p-e de l�.

    Bonne chance.

  4. #4
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut
    Merci pour ta r�ponse !
    Et non ce n'est pas une question idiote, mais j'y avais d�j� r�fl�chi

    Concernant les param�tres que j'envoie (dans le cas pr�sent des communes), les diff�rentes valeurs de 'champ' sont :
    - fcommune si c'est une notice
    - ficommune si c'est une illustration
    - fbrcommune si c'est une br�ve

    Si j'utilise ma m�thode addSelection : la requ�te Ajax trouve des r�sultats pour fcommune, ficommune et fbrcommune.
    Ma requ�te en post pour les notices (merci Firebug) :
    �a marche

    Ma requ�te en post pour les br�ves :
    �a marche (Montbazin, Nancy comme r�sultat)

    Si j'utilise ma m�thode addAutocompl�tion : la requ�te Ajax trouve des r�sultats pour fcommune uniquement.
    Ma requ�te en post si je tape 'A' pour les notices :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    0_fcommune-choice=A&field=fcommune&id=0_fcommune-choice&_=
    �a marche

    Ma requ�te en post si je tape 'M' pour les br�ves :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    0_fbrcommune-choice=M&field=fbrcommune&id=0_fbrcommune-choice&_=
    les r�sultats ne sont pas trouv�s, alors que j'ai une commune 'Montbazin' pour les br�ves.

    Ce qui me surprend le plus, c'est que les param�tres ne changent pas entre les 2 m�thodes, et que �a ne marche qu'avec addSelection.
    De plus, addAutocompl�tion n'est pas forc�ment fausse, puisqu'elle marche bien avec les br�ves...

    Bref, je suis perdue...

    EDIT : Pour info, mes fichiers autocompletion.xsl (utilis� dans addAutocompl�tion)

    Code XML : 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
    <?xml version="1.0" encoding="UTF-8"?><!-- 
        Description :
            Transformation XSL pour l'autocomplétion
    -->
    <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:sdx="http://www.culture.gouv.fr/ns/sdx/sdx"
    	xmlns:snd="http://sinedie.inist.fr/snd"
        xmlns:adfi="http://www.culture.gouv.fr/ns/dapa/1.0"
        exclude-result-prefixes="xsl sdx snd adfi">
     
        <xsl:template match="/">	
        	<ul>
        		<xsl:for-each select="/sdx:document/sdx:terms/sdx:term">
        			<li>
    			<span class="value"><xsl:value-of select="@value"/></span>
    			</li>
        		</xsl:for-each>
        	</ul>
    	</xsl:template>
     
    </xsl:stylesheet>

    Et mon fichier listTerms_ajax.xsl (utilis� dans addSelection)

    Code XML : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 
        Description :
            Transformation XSL pour la réponse de la requête AJAX pour obtenir les 
            enfants d'un terme dans un thésaurus
    -->
    <xsl:stylesheet version="1.0" 
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
      xmlns:sdx="http://www.culture.gouv.fr/ns/sdx/sdx" 
      exclude-result-prefixes="xsl sdx">  
    	<xsl:output method="text"/>	
        <xsl:template match="/">
        	<select>
    	    	<xsl:for-each select="sdx:document/sdx:terms/sdx:term">
        			<option>
        				<xsl:attribute name="value"><xsl:value-of select="@value"/></xsl:attribute>
        				<xsl:value-of select="@value"/>
    	    		</option>
        		</xsl:for-each>
        	</select>
    	</xsl:template>	
    </xsl:stylesheet>

    Qu'on ne me dise pas que le code est trop diff�rent entre les 2 fichiers...

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Par d�faut
    Vu que ton auto-compl�tion, fonctionne dans un cas et pas dans l'autre et que le sympt�me principal est un retour de requ�te vide, je continue � croire que c'est un probl�me de code serveur.

    Je pense � un truc du genre faute de frappe dans un switch par exemple ou autre b�tise qu'on a toujours beaucoup de mal � localiser quand on a le nez dans le code.

    �a m'est arriv� plus d'une fois, et un �il ext�rieur trouve toujours la solution assez vite p/r � celui qui "vit" dans son code depuis un moment.

    Je peux toujours essayer ta fonction d'auto-compl�tion de mon c�t�, mais je ne suis pas sur que ce soit utile vu qu'elle fonctionne bien dans certains cas chez toi.

    J'aurai du mal � t'aider plus pour le moment d�sol�

    Bonne chance.

  6. #6
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut
    Merci encore pour ton aide.
    Mais je ne comprends pas ce que tu appelles "code serveur", peux-tu m'�clairer un peu plus l�-dessus ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Par d�faut
    Quand tu fais un traitement AJAX, tu appelles forc�ment une autre "page" qui te renvoie les infos demand�es, depuis une base de donn�es ou autre.

    Chez moi, �a a toujours �t� un script PHP qui me renvoyait des infos d'une base de donn�e.

    C'est �a que j'appelle un "code serveur".

    Tu n'utilises pas de base de donn�es pour stocker tes infos ni de langage serveur (PHP, ASP, JSP ou autre) pour interroger cette base ?

    Tu appelles directement des fichiers XML ?

  8. #8
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut
    Oui, j'utilise une base de donn�e pour stocker mes fichiers.
    Cette base est incluse dans le logiciel que j'utilise, SDX (une usine � gaz tr�s peu connue que je suis malheureusement oblig�e d'utiliser).
    Si j'ai bien compris, les fichiers "code serveur" que j'utilise sont les fichiers XSL que j'ai fourni dans mon post pr�c�dent : ils vont chercher dans les bases de donn�es les infos que je veux.

    EDIT : Tu pourra remarquer qu'il y a tr�s peu de diff�rence entre les 2 fichiers, pourtant, l'un marche avec les br�ves et l'autre non... Si tu arrives � voir le probl�me...

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Par d�faut
    Effectivement, ce sont bien ces fichiers qui sont ton "code serveur" dans le sens o� je l'entendais.

    Et oui, je ne connais pas SDX :p
    Mais je compatis, je suis "oblig�" de faire du WebDev au boulot, et ce n'est pas dr�le tous les jours (jamais dr�le en fait mais bref).

    Ces fichiers sont g�n�r�s automatiquement ou c'est toi qui les �crit ?

    Remarque de profane donc: je vois deux diff�rences en fait dans ces fichiers.

    1. listTerms_ajax.xsl comporte une mention
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <xsl:output method="text"/>
    que n'a pas l'autre fichier.

    2. il y a une l�g�re diff�rence dans le "foreach" dans deux fichiers:
    dans autocompletion.xsl =>
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <xsl:for-each select="/sdx:document/sdx:terms/sdx:term">
    dans listTerms_ajax.xsl =>
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <xsl:for-each select="sdx:document/sdx:terms/sdx:term">
    (il n'y a pas de "/" au d�but de l'attribut select)


    Si par miracle �a peut t'aider :p

    Bonne chance.

  10. #10
    Membre exp�riment�

    Avatar de mlny84
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    4 023
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 4 023
    Par d�faut
    Dur dur de travailler avec les outils impos�s...

    Ces fichiers ne sont pas g�n�r�s automatiquement. Je me suis grandement "inspir�" d'une version pr�c�dente du site que mon pr�d�cesseur (parti bien loin maintenant) avait r�alis�.

    Tout comme Ajax, je suis en apprentissage du XSL, mais merci pour les remarques, j'ai pu effectuer d'autres tests.

    Pour le '/' devant le chemin, je t'avoue que je n'y avais jamais vraiment pr�t� attention : �a marche avec et �a marche sans.
    Apr�s quelques recherches sur le site, il semblerait que la diff�rence entre ces 2 chemins soient une histoire de chemin relatif ou absolu.
    Comme dans mon cas, mon "sdx:document" est � la racine, et que je me place � la racine au d�but (<xsl:template match="/">), il n'y a pas de diff�rences.

    Bref, avec ou sans / au d�but, mes r�sultats sont toujours les m�me.

    Pour le <xsl:output method="text"/>, il permet de d�finir le type de sortie qui sera produit. J'ai essay� avec et sans cette ligne dans mes 2 fichiers, cela ne change rien, m�me r�sultats.

    J'ai pourtant red�marrer Tomcat et vid� le cache du navigateur pour �tre s�re que les modifications �taient bien prises en compte, mais rien n'y fait, ma requ�te Ajax est toujours vide pour les br�ves...

    __________________________________________________________________________________________________________________




    Bon, apr�s d'autres tests et trifouillage dans mes fichiers, je me suis souvenue que mon fichier XSL fonctionnait toujours avec un fichier XSP et que je n'avais jamais fait attention � son contenu...

    Mon fichier autocompletion.xsp :

    Code XML : 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
     
    <?xml version="1.0"?>
    <!-- 
        Description :
            Page XSP retournant les possibilités d'autocomplétion
    -->
    <xsp:page xmlns:xsp="http://apache.org/xsp" 
    	xmlns:sdx="http://www.culture.gouv.fr/ns/sdx/sdx"
        xmlns:snd="http://sinedie.inist.fr/snd">
    	<sdx:page show="user get post headers">
            <sdx:logout/>
           	<xsp:logic>
    	       	request.setCharacterEncoding("iso-8859-1");
            	String id = request.getParameter("id");
            	String start = request.getParameter(id);
                String reqMin = start.substring(0,1).toLowerCase() + start.substring(1) + "*";  
                String reqMaj = start.substring(0,1).toUpperCase() + start.substring(1) + "*";            
           	</xsp:logic>
            <sdx:terms base="base_notices" hpp="20" fieldParam="field" valueString="reqMin"/>
            <sdx:terms base="base_notices" hpp="20" fieldParam="field" valueString="reqMaj"/>
    	</sdx:page>
    </xsp:page>

    Et nous voyons un magnifique "base_notices" : les termes ne sont cherch�s que dans cette base, c'est pourquoi cela fonctionne avec les notices et pas avec les autres types de documents... Si je remplace par "base_illus" ou "base_breves" : alors �a marche pour les illustrations ou les br�ves...

    Je suis un boulet...

    J'ai plus qu'� revoir un peu ce code pour prendre mes 3 bases en consid�rations, mais j'ai fini par voir d'o� venait le probl�me !!!

    Merci � toi jojosbiz pour ton aide, comme tu l'as dit :
    un �il ext�rieur trouve toujours la solution assez vite p/r � celui qui "vit" dans son code depuis un moment.

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    130
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 130
    Par d�faut
    Heureux d'avoir pu t'aider, m�me un petit peu

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [AJAX] Autocompl�tion avec ajax et C#
    Par Kira77 dans le forum AJAX
    R�ponses: 5
    Dernier message: 06/12/2012, 11h11
  2. [AJAX] autocompl�tion avec ajax et php
    Par timmy1 dans le forum G�n�ral JavaScript
    R�ponses: 1
    Dernier message: 07/06/2007, 16h28
  3. [AJAX] PHP avec ajax(makerequest)
    Par Benjiijneb dans le forum G�n�ral JavaScript
    R�ponses: 7
    Dernier message: 11/04/2006, 16h53
  4. [AJAX] Modifier avec AJAX une image g�n�r�e avec GD
    Par thsantac dans le forum G�n�ral JavaScript
    R�ponses: 2
    Dernier message: 27/03/2006, 19h34
  5. [AJAX] Autocompl�tion + m�thode Ajax
    Par seblo_scoqi dans le forum G�n�ral JavaScript
    R�ponses: 8
    Dernier message: 26/10/2005, 16h24

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