0

当我查看 Chrome 开发人员工具的响应时,我看到:

[{
"summary": "foo",
"key": "myKey"
}]

我的javascript(更新):

jquery183(function() { 
jquery183( "#city" ).autocomplete({
    source: function( request, response ) {
        jquery183.ajax({
            url: '/servlet/ajax/',
            dataType: "jsonp",
            data: {
                featureClass: "P",
                style: "full",
                maxRows: 12,
                name_startsWith: request.term
            },
            success: function( data ) {
                response( jquery183.map( data, function( issue ) {
                    return {
                        label: issue.summary + ", " + issue.key,
                        value: issue.summary
                    }
                }));
            }
        });
    },
    minLength: 2,
    open: function() {
        jquery183( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
    },
    close: function() {
        jquery183( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
    }
});

});

HTML:

 <div class="ui-widget">
    <label for="city">Your city: </label>
    <input id="city" />
    Powered by <a href="http://geonames.org">geonames.org</a>
 </div>

我认为这应该可行,但它不建议任何自动完成项目。有什么建议么?

如果需要更多代码,请随时询问。

4

3 回答 3

1

如上所示:http: //jqueryui.com/autocomplete/#remote-jsonp

您忘记复制/粘贴 ajax 调用来检索您的数据。

$( "#city" ).autocomplete({
      source: function( request, response ) {
        $.ajax({
          url: "http://ws.geonames.org/searchJSON",
          dataType: "jsonp",
          success: function( data ) {
            response( $.map( data.geonames, function( item ) {
              return {
                label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
                value: item.name
              }
            }));
          }
        });
      }
});
于 2013-01-09T13:02:13.690 回答
0

我不确定,但<input id="city" />. 应该是<input id="city" type="text"/>

于 2013-01-09T12:57:15.140 回答
0

从这里找到答案:

Ajax 成功事件不起作用

结果可能不是 JSON 格式,所以当 jQuery 尝试解析它时,它会失败。您可以使用 error: 回调函数来捕获错误。

无论如何,您似乎不需要在该函数中使用 JSON,因此您也可以取出 dataType: 'json' 行。

于 2013-01-10T07:23:04.033 回答