Как проверить правильность введенного пользователем почтового индекса США Почтовый индекс США - PullRequest
2 голосов
/ 13 июля 2010

Я хочу подтвердить, что введенный пользователем почтовый индекс действителен или нет.

for example пользователь ввел 009876654 и оно недействительно, тогда должно быть выдано сообщение об ошибке.

Я знаю, что могу сделать это, используя javascript regulr expression или ajax-zip-code-database

Но я не хочу ничего из вышеперечисленного.Мне нужен какой-то плагин, который отправляет запрос в какое-либо онлайн-приложение, чтобы проверить, действителен он или нет. Я хочу этого, потому что не хочу заботиться, если в будущем произойдет изменение почтовых индексов или новых почтовых индексов.коды добавляются.

PS: - Я не хочу использовать javascript или ajax-zip-code-database

Ответы [ 2 ]

1 голос
/ 27 июля 2010

На webservicex имеется веб-служба, которая может предоставить вам результаты XML с помощью вызова GET или даже вызова POST.Я никогда не использовал его, но, похоже, это то, что вы ищете.

Несуществующие почтовые индексы возвращают пустой набор данных

wget http://www.webservicex.net/uszip.asm /GetInfoByZIP?USZip=60001

<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
  <Table>
  <CITY>Alden</CITY>
  <STATE>IL</STATE>
  <ZIP>60001</ZIP>
  <AREA_CODE>815</AREA_CODE>
  <TIME_ZONE>C</TIME_ZONE>
</Table>
</NewDataSet>
0 голосов
/ 13 июля 2010

Предполагая, что ваше приложение коммерчески совместимо с их условиями использования, мне интересно, можете ли вы использовать службу геокодера Google для поиска почтового индекса, а затем проверить результаты, чтобы увидеть, существует ли оно.Я предполагаю, что если вы вернете почтовый индекс и нормальную пару лат, то вы можете сделать вывод, что почтовый индекс является реальным.

Код ниже (по общему признанию, использование устаревшего API V2 показывает один подход для поиска в США).Преимущество заключается в том, что для проверки используются конечные пользователи и вычислительные ресурсы и пропускная способность Google.

Не знаю, насколько это сложно для ваших целей, хотя я обнаружил, что геокодер Googleбудь ослепительно быстр.

gecoder = new GClientGeocoder();

geocoder.getLocations(zipcode, function(response) {
    if (response && response.Status.code === 200) {
        var places = response.Placemark;
        for (var p in places) {
            if (places[p].AddressDetails.Country.CountryNameCode === 'US') {
                // lat => places[p].Point.coordinates[1],
                // lng => places[p].Point.coordinates[0],
                // zip => places[p].AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber
            }
        }
    }
});
...