2010-07-13 133 views
2

我想驗證用戶輸入的郵政編碼是否有效。如何驗證用戶輸入的郵政編碼是否正確美國郵政編碼

for example用戶輸入009876654並且它是無效的,那麼應該給出錯誤消息。

我知道我可以使用javascript regulr expression或使用ajax-zip-code-database

但我不希望任何上述的事情。我需要一些插件類的東西,發送請求到一些在線應用程序來檢查它是否有效。我想這樣做是因爲如果將來郵政編碼或新郵政編碼有變化,我不想保重,代碼被添加。

P.S. : - 我不想使用javascript或使用ajax-zip-code-database

+0

你的意思是你不希望使用在所有的JavaScript(調用web服務)或只是它的正則表達式部分? – Tommy 2010-07-13 11:28:27

+0

@Tommy: - 只是它的正則表達式部分 – Salil 2010-07-13 11:36:34

回答

0

假設您的應用程序與其使用條款在商業上兼容,我想知道您是否可以使用Google的gecoder服務查找郵政編碼,然後檢查結果,看看它是否存在。我會假設如果你找回一個郵政編碼和一個理智的拉特,你可以得出結論,郵政編碼是真實的。 (承認使用現在已棄用的V2 API顯示以美國爲中心的搜索的一種方法)。其優勢在於它是用於驗證的最終用戶和Google計算資源和帶寬。

我不知道這是否爲您的目的有點沉重,雖然我發現谷歌的gecoder是非常快的。

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 
      } 
     } 
    } 
}); 
1

有一個在webservicex一個Web服務,它可以從一個GET甚至POST電話給你的XML結果。我從來沒有使用它,但它似乎是你在找什麼。

不存在的郵政編碼返回一個空的數據集

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>