Frage

Ich war mit geonames.org bis zum automatischen Vervollständigung Stadt und Staat, aber fand es viel zu langsam sein, zuverlässig zu sein. Mein Code ist wie folgt und funktioniert (warten etwa 10 Sekunden, um die Autocomplete-Ergebnisse zu sehen)

Alt (Arbeits) Code hier: http://jsbin.com/umewo3/2 / edit

  $(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
    });
  });

Jetzt bin ich mit YQL, da sie eine viel schnellere Antwort liefern. Das Problem ist, dass ich scheinen nicht zu verstehen, wie man richtig die Antwort abzubilden. Sie können sehen, ich bin eine gut formulierte Anforderung senden und die Antwort zurück bekommen -. Aber ich bin irgendwie nicht mit der Antwort zu tun richtig

Neu (gebrochen) Code hier: http://jsbin.com/aqoke3/2 / edit

$(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
    });
  });
War es hilfreich?

Lösung

Ich fand das Problem. Ich beschäftige mich damit richtig, nachdem alle. Ich schaffte es die P vom JSONP datatype zu entfernen.

Alles ist gut: http://jsbin.com/aqoke3/4/edit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top