jQuery UI自动完成远程JSON响应

jQuery UI自动完成远程JSON响应,jquery,jquery-ui,autocomplete,jquery-ui-autocomplete,Jquery,Jquery Ui,Autocomplete,Jquery Ui Autocomplete,我使用geonames.org自动完成城市和州的数据,但发现速度太慢,不可靠。我的代码如下所示,并且确实有效(等待大约10秒以查看自动完成结果) 此处的旧(工作)代码: 现在我使用YQL,因为它们提供更快的响应。问题是我似乎不明白如何正确地映射响应。你可以看到我发送了一个格式良好的请求,并得到了回复——但不知何故,我没有正确处理回复 此处有新(坏)代码: 我发现了问题。毕竟,我正在妥善处理这件事。我设法从jsonp数据类型中删除了P 一切正常:我发现了问题。毕竟,我正在妥善处理这件事。我设法从j

我使用geonames.org自动完成城市和州的数据,但发现速度太慢,不可靠。我的代码如下所示,并且确实有效(等待大约10秒以查看自动完成结果)

此处的旧(工作)代码:

现在我使用YQL,因为它们提供更快的响应。问题是我似乎不明白如何正确地映射响应。你可以看到我发送了一个格式良好的请求,并得到了回复——但不知何故,我没有正确处理回复

此处有新(坏)代码:


我发现了问题。毕竟,我正在妥善处理这件事。我设法从jsonp数据类型中删除了P


一切正常:我发现了问题。毕竟,我正在妥善处理这件事。我设法从jsonp数据类型中删除了P

一切都好:

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