2011-07-13 10 views
17

Estoy usando la versión 1.8.13 de Autocompletar de jQuery UI y de forma predeterminada jQuery usa el parámetro de consulta de "? Term =" de forma predeterminada, mientras mi aplicación está utilizando "? Q = "en la cuerda que está creando. PODRÍA cambiar la variable para que sea "término" en el back-end, pero prefiero decirle a jQuery lo que el servidor está tratando de enviar. ¿Hay alguna manera de cambiar esto?Cambiar el parámetro de consulta para Autocompletar de jQuery UI

Ahora mismo tengo algo como esto y funciona si cambio la variable a "término" en el back-end, pero como dije, quería cambiarla a "q" y no puedo encontrar ninguna información en línea acerca de la configuración del parámetro (que funciona):

$("#input-search").autocomplete({ 
    source: "/search/autocomplete/" 
}); 

Respuesta

25

Se podría utilizar el callback form of source y manejar toda la interacción con el servidor de usted mismo. Algo como esto:

$("#input-search").autocomplete({ 
    source: function(request, response) { 
     $.get('/search/autocomplete', { q: request.term }, function(data) { 
      response(data.split('\n')); 
     }); 
    } 
}); 
+0

No necesitaba el .split ('\ n') - ya era un array –

+0

que vale la pena señalar que también puede cambiar el término de búsqueda utilizando el código fuente (limpie las direcciones de correo electrónico con caracteres adicionales). El método de "búsqueda" ya ha guardado el término de búsqueda, por lo que cambiar el valor allí (en la entrada) es demasiado tarde. –

11

La respuesta anterior es un gran ejemplo sencillo y me ayudó a llegar a este resultado en mi aplicación que genera una lista desordenada de los datos de respuesta que muestra los resultados de autocompletar:

$("#input-search").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
     url: "/search/autocomplete", 
     dataType: "json", 
     data: { 
      q: request.term 
     }, 
     success: function(data) { 
      response(data); 
     } 
     }); 
    }, 
}).data("autocomplete")._renderItem = function(ul, item) { 
    $(ul).attr('id', 'search-autocomplete'); 
     return $("<li class=\""+item.type+"\"></li>") 
     .data("item.autocomplete", item) 
     .append("<a href=\""+item.url+"\">"+item.title+"</a>").appendTo(ul); 
    }; 
Cuestiones relacionadas