Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Autocomplete

  1. #1

    Autocomplete

    Ciao ho un problema con l'autocomplete di java. Ho una form con una casella di input. Scrivendo in questa casella di input mi devono venire fuori le opzioni possibili prese dal mio database prendendo come riferimento le lettere che man mano scrivo nella casella.

    PEZZO DEL FORM
    codice:
    <form id="theform" name="theform" action="doListaDomande.jsp" method="POST">                        
    
    
    <label>Categoria <input type="text" id="categoria" name="categoria"/>                            
    <input type="text" id="idcategoria" name="idcategoria"/> </label> 
    <span id="completacategorie"></span><%--nello span metto le opzioni delle parole--%>                        </p>                        
    
                                <input id="bottone" type="submit" value="cerca">                        </p>                     </form>
    AUTOCOMPLETE(si trova nella view del form)
    codice:
    <script type="text/javascript"> 	$(function() { 		$('#categoria').autocomplete({ 			
    minLength: 0, 
    source: "ajax/ajaxCompletaCategorie.jsp?"+$('#categoria').val(), 
    focus: function(event, ui) { 				$('#categoria').val(ui.item.label); 				
    return false;
    		}, 			
    select: function(event, ui) { 				
    $('#categoria').val(ui.item.label); 
    $('#idcategoria').val(ui.item.value);
    return false; 			} 		}) 	});     </script>
    PAG AJAX
    codice:
    <%@page import="java.util.List"%><%@page import="it.polito.elite.qax.db.CategoriaDAO"%><%@page contentType="text/plain" pageEncoding="UTF-8"%>
    <%      String testo = request.getParameter("term") ;    
     //The Autocomplete plugin does not filter the results,     /
    /instead the request parameter "term" gets added to the URL,     
    //which the server-side script should use for filtering the results.    
     CategoriaDAO cdao = new CategoriaDAO() ;    
     List<String> completamenti = cdao.getCompletamenti(testo) ; 
    //mi ritorna una lista di String del tipo "value":"3","label":"canzoni"      out.print("[");    
     int i=1;    
     for ( String s : completamenti ) {          
     out.print(s) ;           
    if (i<completamenti.size()) {              
     out.print(",");          
     }           
    i++;     }     
    out.print("]"); %>
    Il codice è del prof ma non mi funziona, inoltre non capisco alcune cose: tipo a cosa serva la variabile "term" e perchè al suo posto non c'è "testo"..con term non trova nulla nel database, con testo si perchè nella pagina javascript dove faccio la richiesta ad ajax ho 'xhr.open("GET", "ajax/ajaxCompletaCategorie.jsp?testo="+testo) '.
    Vi prego aiutatemi e scusate x il codice lungo

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ciao e benvenuta/o:
    A) Non mi funziona lascia il tempo che trova, nel dettaglio cosa è che fa o non fa?
    B) La libreria jquery la richiami (includi) nella pagina giusto?
    C) Riporta eventuali errori
    D) Posta un link alla pagina pubblica (tuosito.xxxx/paginademoautocomplete.xxxx)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Originariamente inviato da cavicchiandrea
    Ciao e benvenuta/o:
    A) Non mi funziona lascia il tempo che trova, nel dettaglio cosa è che fa o non fa?
    B) La libreria jquery la richiami (includi) nella pagina giusto?
    C) Riporta eventuali errori
    D) Posta un link alla pagina pubblica (tuosito.xxxx/paginademoautocomplete.xxxx)
    la libreria si la richiamo
    la pag intendi qst? http://localhost:8084/qax/viewListaDomande.jsp perchè non credo funzioni x voi perchè dovrebbe collegarsi al database!

    cmq praticamente se io scrivo x l'autocomplete questo
    codice:
    $("#categoria").autocompleteArray([             "ciao","come","andiamo"         ] );
    mi viene effettivamente fuori una sorta di tendina con, per es, se clicco il tasto 'c' le parole ciao e come. Però se gli passo in source la pagina ajax che si collega al mio database allora non funziona, però la pagina ajax trova correttamente i dati(sempre se non uso il request.getParameter("term")) perchè quando, tramite la pagine javascript, faccio la richiesta alla pag ajax e ricevo risp, gli dico di stampare i dati ricevuti in uno span e ci sn tutti, però poi è come se l'autocomplete non li vedesse !
    Pensavo che l'errore stesse nel source e ho provato a modificarlo cosi
    codice:
    source: "ajax/ajaxCompletaCategorie.jsp?testo="+$('#categoria').val(),
    ma niente

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Pagina pubblica online non locale, altrimenti le prove diventano impossibili, sicuro al 100% che la pagina jsp funzioni corrottamente (come riprova togli momentaneamente autocomplete)?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    nei commenti del codice c'è scritto che la risposta del metodo getCompletamenti è qualcosa di questo tipo:

    "value":"3","label":"canzoni"

    aggiungendoci le parentesi di inizio e fine e altri record del db dovrebbe diventare qualcosa del genere, un esempio:

    codice:
    ["value":"1","label":"canzoni1",
    "value":"2","label":"canzoni2",
    "value":"3","label":"canzoni3"]
    Questo formato non va bene, il formato dovrebbe essere questo:

    codice:
    [{"value":"1","label":"canzoni1"},
    {"value":"2","label":"canzoni2"},
    {"value":"3","label":"canzoni3"}]
    Controlla che sia cosi.

    Sempre leggendo i commenti sembra che dovete applicare un filtro sui dati ricevuti dal db, la variabile term dovrebbe rappresentare il filtro, quindi devi aggiungere il parametro nell'url dell'autocomplete

    "ajax/ajaxCompletaCategorie.jsp?term="+$('#categoria').v al()

  6. #6
    Originariamente inviato da Vindav
    nei commenti del codice c'è scritto che la risposta del metodo getCompletamenti è qualcosa di questo tipo:

    "value":"3","label":"canzoni"

    aggiungendoci le parentesi di inizio e fine e altri record del db dovrebbe diventare qualcosa del genere, un esempio:

    codice:
    ["value":"1","label":"canzoni1",
    "value":"2","label":"canzoni2",
    "value":"3","label":"canzoni3"]
    Questo formato non va bene, il formato dovrebbe essere questo:

    codice:
    [{"value":"1","label":"canzoni1"},
    {"value":"2","label":"canzoni2"},
    {"value":"3","label":"canzoni3"}]
    Controlla che sia cosi.

    Sempre leggendo i commenti sembra che dovete applicare un filtro sui dati ricevuti dal db, la variabile term dovrebbe rappresentare il filtro, quindi devi aggiungere il parametro nell'url dell'autocomplete

    "ajax/ajaxCompletaCategorie.jsp?term="+$('#categoria').v al()
    il formato del get completamenti è corretto viene fuori con le parentesi graffe
    ho anche provato a passargli il parametro term, ho modificato nella pagina js qst riga
    codice:
    xhr.open("GET", "ajax/ajaxCompletaCategorie.jsp?testo="+testo) ;
    e le altre sostituiendo alla variabile testo 'term' altrimenti non troverebbe nulla però continua ancora a non funzionare l'autocomplete

  7. #7
    Originariamente inviato da cavicchiandrea
    Pagina pubblica online non locale, altrimenti le prove diventano impossibili, sicuro al 100% che la pagina jsp funzioni corrottamente (come riprova togli momentaneamente autocomplete)?
    oddio scusa la domanda ma come faccio a non passarla in locale?
    cmq si senza l'autocomplete il resto della pagina funziona

  8. #8
    HO RISOLTO!!! il problema è che nella pagina jsp mettevo lo script per la pagina javascript che faceva la richiesta XML alla pagina jsp di ajax...togliendola funziona anche se non capisco a questo punto a cosa mi serva avere la pagina javascript

    Solo un ultima conferma. I plugin da inserire sono questi giusto?
    codice:
      <script type="text/javascript" src="js/jquery-1.8.3.js" ></script>         
    <script type="text/javascript" src="js/jquery-ui-1.8.17.custom.min.js"></script>                            
    <script type="text/javascript" src="ui/jquery.ui.autocomplete.min.js" ></script>         
    <script type="text/javascript" src="ui/jquery.ui.position.min.js" ></script>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.