I would like to improve my forms and remove city and state fields so that there are 2 less fields to fill out. I have an input field for city and select drop-down for state. Instead of asking visitors to fill them out, I can do a look up via JavaScript or backend like php to populate the city and state before saving the record in my database. I'm leaning towards a web service versus an offline zip db that I would have to keep up to date.
Are there any free or cheap tools I can use to populate city and state based on zip code provided?