2011-12-25 7 views
5

que he estado trabajando siempre en esto, y buscado a través de todos los otros ejemplos y todavía parece que no puede entenderlo, tratando de usar jQuery UI autocompletar, primera vez tratando de poner esto todo junto. Aquí está mi JS:jQuery autocompletado remota fuente de datos JSON no devolver los datos

$(document).ready(function() { 
$("#search-title").autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      url: "/include/autocomplete", 
      dataType: "json", 
      data: { 
         term: request.term  
        }, 
      success: function (data) { 
       response($.map(data.stuff, function (item) { 
        return { 
         label: item.name, 
         value: item.name 
        }; 
       })); 
      } 
     }); 
    }, 
    minLength: 2, 
    focus: function (event, ui) { 
     $(event.target).val(ui.item.label); 
     return false; 
    }, 
    select: function (event, ui) { 
     $(event.target).val(ui.item.label); 
     window.location = ui.item.value; 
     return false; 
    } 
}); 
}); 

la salida a la respuesta de Firebug, creo que estoy recibiendo JSON formato correcto aquí:

{"stuff":[ {"label" : "Dragon", "value" : "http://site.com/animal/firebreathers"}] } 

Pero por alguna razón no es conectar. Después de presionar el minLength, se abrirá una pequeña caja vacía debajo del campo de búsqueda, pero no habrá nada allí.

ACTUALIZACIÓN: Cuando agrego "alerta (elemento);" en respuesta a la llamada, me sale una ventana que dice "La página en site.com dice: Objeto objeto" - esto podría ser el problema?

+0

no es el elemento un objeto? ¿Has intentado acceder a los parámetros en el elemento como item.value? –

+0

¡Gracias! gracias a ti finalmente tengo mi respuesta. –

Respuesta

2

finalmente lo he descubierto, gracias a esa observación indirecta bajo mi pregunta.

En el retorno, que he copiado desde el sitio de la interfaz de usuario jQuery, tuve:

label: item.name, 
value: item.name 

Cambiar a que:

label: item.label, 
value: item.value 

solucionado mi lucha con jQuery. No tengo idea si esta es una buena práctica, ¡pero finalmente funciona!

0

tratar de usar jsonp JSON en lugar de en el tipo de datos.

Cuestiones relacionadas