0

嗨,我正在为邮政编码字段使用 jquery UI 自动完成插件。

jQuery UI 自动完成插件使用 geonames.org 的 JSON 响应。

这是我得到响应的代码:-

jQuery( "#"+prefix+"_zip" ).autocomplete({

        source: function( request, response ) {
            jQuery.ajax({
                url: "http://ws.geonames.org/postalCodeSearchJSON",
                dataType: "jsonp",
                data: {
                    style: "full",
                    maxRows: 12,
                    postalcode_startsWith: request.term
                },
                success: function( data ) {

                    response( jQuery.map( data.postalCodes, function( item ) {
                        return {
                            label: item.placeName + (item.adminCode1 ? ", " + item.adminCode1 : "") + ", " + item.postalCode + ", "+item.countryCode,
                            value: item.postalCode
                        }
                    }));
                                        jQuery('.ui-autocomplete').css('width', '188px');
                }
            });
        }

现在,当将光标放在邮政编码字段并输入任何邮政编码时,它会建议我输入一个自动完成列表以输入否,或者我们可以说 jQuery 插件向我显示了我输入的代码的相对值。

现在我有一个自定义要求,我只想获取美国邮政编码的 JSON 响应。

我的意思是当在邮政编码字段中输入任何值时,它应该将美国相关的邮政编码显示为自动完成列表。

谁能告诉我如何只从 geonames.org 获得美国邮政编码 JSON 响应?

4

2 回答 2

1

您的网址可以将国家/地区作为参数传递,

例如墨西哥 http://ws.geonames.org/searchJSON?&country=MX

美国 http://ws.geonames.org/searchJSON?&country=US

另一个很酷的事情是,如果你想让 api 返回墨西哥和美国的所有城市,你可以这样做,

http://ws.geonames.org/searchJSON?&country=US,MX&username=tpassolano

注意:geonames 现在需要用户名,更新的 api 调用

希望这可以帮助!

于 2013-01-11T18:19:14.927 回答
0

您可以稍微修改您的请求并添加国家/地区选项:

jQuery("#"+prefix+"_zip").autocomplete({
    source: function( request, response ) {
        jQuery.ajax({
            url: "http://ws.geonames.org/postalCodeSearchJSON",
            dataType: "jsonp",
            data: {
                style: "full",
                maxRows: 12,
                postalcode_startsWith: request.term,
                country: "US"
            },
            success: function( data ) {
                response( jQuery.map( data.postalCodes, function( item ) {
                    return {
                        label: item.placeName + (item.adminCode1 ? ", " + item.adminCode1 : "") + ", " + item.postalCode + ", "+item.countryCode,
                        value: item.postalCode
                    }
                }));
                jQuery('.ui-autocomplete').css('width', '188px');
            }
        });
    }
});

GeoNames Web 服务文档中列出了邮政编码搜索的所有选项

于 2012-12-20T16:13:19.697 回答