respuesta JSON remoto jQuery UI Autocompletar
-
25-09-2019 - |
Pregunta
Yo estaba usando geonames.org a la ciudad y el estado de autocompletar, pero pareció ser demasiado lento para ser fiable. Mi código es el siguiente, y hace el trabajo (espere unos 10 segundos para ver los resultados de autocompletar)
Antiguo (de trabajo) código aquí: http://jsbin.com/umewo3/2 / editar
$(function() {
$( "#sf_city" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "http://ws.geonames.org/searchJSON",
dataType: "jsonp",
data: {
featureClass: "P",
style: "full",
maxRows: 10,
country: 'US',
name_startsWith: request.term
},
success: function( data ) {
response( $.map( data.geonames, function( item ) {
return {
value: item.name + (item.adminName1 ? ", " + item.adminCode1 : "")
}
}));
}
});
},
minLength: 2
});
});
Ahora estoy usando YQL ya que proporcionan una respuesta mucho más rápida. La cuestión es que no parecen entender cómo asignar adecuadamente la respuesta. Se puede ver que estoy enviando una solicitud bien formado, y conseguir la parte posterior respuesta -. Pero de alguna manera no estoy tratando con la respuesta adecuada
Nuevo (roto) código aquí: http://jsbin.com/aqoke3/2 / editar
$(function() {
$( "#sf_city" ).autocomplete({
source: function( request, response ) {
$.ajax({
url: "http://query.yahooapis.com/v1/public/yql",
dataType: "json",
data: {
q: 'select name,admin1.code from geo.places where text="' + request.term + '*" and country.code="US" limit 10 | sort(field="popRank", descending="true")',
format: 'json',
callback: 'cbfunc'
},
success: function( data ) {
response( $.map( data.query.results.place, function( item ) {
return {
value: item.name
}
}));
}
});
},
minLength: 2
});
});
Solución
He encontrado el problema. Estoy tratando de modo adecuado después de todo. Me las arreglé para eliminar el P de la tipoDatos jsonp.
Todo está bien: http://jsbin.com/aqoke3/4/edit