2010-06-28 8 views
23

jQuery plugin de autocompletar solicitud enviada como estocómo cambiar el complemento de autocompletado de jQuery clave de querystring predeterminada? (Plazo para que yo quiero)

mysite.com/suggestion?term=Sadegh 

¿hay alguna manera de cambiar la clave de cadena de consulta término a otro? no puedo encontrar la opción que proporcionan esto por mí;)

+1

¿Qué plugin de autocompletar? – SLaks

+0

lo siento jQuery UI Autocompletar – Sadegh

+0

Disculpa por mi respuesta, he entendido mal la pregunta. – CuSS

Respuesta

15

Asumo que está utilizando jQuery UI AutoComplete

Es necesario proporcionar una devolución de llamada como la fuente, así:

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

y segunda pregunta: ¿cómo puedo aplicar el efecto como fundido a la lista de sugerencias? – Sadegh

+0

cuando eso muestra u oculta – Sadegh

+0

Maneja los eventos 'open' y' close'. – SLaks

57

Lo anterior no es correcto para la versión actual (1.8.6). No estoy seguro si es que alguna vez fue ...

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

foo: ser el nuevo nombre clave param ..

+4

Correcto ... la solución aceptada arriba proporciona una URL mal formada. ¡Este funciona bien! –

+0

En una aplicación ASP.NET MVC donde la URL de búsqueda es: 'server/suggest/{keyword}' utilicé la función '$ .getJSON ("/suggest/"+ request.term, {}, response);' y funcionó – Amr

+0

ESTA DEBERÍA SER LA RESPUESTA ACEPTABLE y sí lo siento por el bloqueo del casquillo;) – GedankenNebel

1

En realidad Desenterré el código que utiliza el plugin. Adaptándolo a cambiar el término sería algo como esto:

$('#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([]); 
       } 
      }); 
     } 
    })() 
}); 

que diría esto tiene 2 ventajas:

  1. Abortar solicitudes pendientes
  2. llamar a la respuesta con un conjunto vacío en caso de error , que me parece más educado
Cuestiones relacionadas