2010-06-28 15 views
23

jQuery completamento automatico plug richiesta inviata come questocome modificare la chiave di querystring predefinita del plugin di completamento automatico jQuery? (Termine che voglio)

mysite.com/suggestion?term=Sadegh 

non v'è alcun modo per cambiare chiave querystring termine ad un altro? non riesco a trovare l'opzione che forniscono questo per me;)

+1

quali plug-in di completamento automatico? – SLaks

+0

mi dispiace jQuery UI Autocomplete – Sadegh

+0

Scusate per la mia risposta, ho frainteso la domanda. – CuSS

risposta

15

Presumo che si sta utilizzando jQuery UI AutoComplete

È necessario fornire una richiamata come fonte, in questo modo:

$(...).autocomplete({ 
    source: function(term, callback) { 
     $.getJSON("url", { foo: term }, callback); 
    } 
}); 
+0

e seconda domanda: come posso applicare l'effetto come dissolvenza alla lista di suggerimenti? – Sadegh

+0

quando mostra o nasconde – Sadegh

+0

Gestisce gli eventi 'open' e' close'. – SLaks

57

È possibile che questo non è corretto per la versione corrente (1.8.6). Non sono sicuro se mai lo è stato ...

$(...).autocomplete({ 
    source: function(request, response) { 
    $.getJSON("url", { foo: request.term }, response); 
    } 
}); 

foo: è il nuovo nome di chiave param ..

+4

Corretto .. la soluzione accettata sopra fornisce un url non corretto. Questo funziona bene! –

+0

In un'applicazione ASP.NET MVC in cui l'URL di ricerca è: 'server/suggerire/{keyword}' Ho usato la funzione '$ .getJSON ("/suggest/"+ request.term, {}, response);' e ha funzionato – Amr

+0

QUESTO DEVE ESSERE LA RISPOSTA ACCETTATA e sì, mi dispiace per il capslock;) – GedankenNebel

1

In realtà ho scavato il codice che il plugin usa. Adattandolo a cambiare il termine sarebbe qualcosa di simile:

$('#form').autocomplete({ 
    source: (function() { 
     var xhr; 
     return function(request, response) { 
      if (xhr) { 
       xhr.abort(); 
      } 
      xhr = $.ajax({ 
       url: 'mysite.com/suggestion', 
       data: { 
        foo: request.term 
       }, 
       dataType: 'json', 
       success: function(data) { 
        response(data); 
       }, 
       error: function() { 
        response([]); 
       } 
      }); 
     } 
    })() 
}); 

direi che questo ha 2 vantaggi:

  1. Abort richieste in sospeso
  2. chiamata la risposta con un insieme vuoto in caso di errore , che sembra più gentile con me
Problemi correlati