Вопрос

Я использовал GeOnames.org в автозаполненный город и штат, но нашел его слишком медленно, чтобы быть надежным. Мой код выглядит следующим образом и работает (подождите около 10 секунд, чтобы увидеть результаты автозаполнения)

Старый (рабочий) код здесь: 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
    });
  });

Теперь я использую YQL, поскольку они обеспечивают гораздо более быстрый ответ. Вопрос в том, что я не понимаю, как правильно сопоставить ответ. Вы можете увидеть, что я посылаю хорошо сформированный запрос и получить ответ на ответ - но я как-то не имею дело с ответом правильно.

Новый (сломанный) код здесь: 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
    });
  });
Это было полезно?

Решение

Я нашел проблему. Я имею дело с этим правильно в конце концов. Мне удалось удалить P из DATATYPE JSONP.

Все хорошо: http://jsbin.com/aqoke3/4/edit.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top