I am querying the zippopotam.us Zip Code lookup service to return City info. This stand alone code block works:
$("#studentPostCode").blur(function() {
var zip_in = $(this);
if (zip_in.val().length == 5) {
$.ajax({
url: "http://api.zippopotam.us/SE/" + zip_in.val(),
cache: false,
dataType: "json",
type: "GET",
success: function(result, success) {
// Accept the first result
var places0 = result['places'][0];
var placeName = places0['place name'];
$("#studentCity").val(placeName);
},
error: function(result, success) {}
});
}
});
However when I try to refactor so I can use it in other places, it breaks. My efforts:
//calls
$("#studentPostCode").blur(function() {
var pCode0 = $(this);
var myCity0 = getPlaceFromPostCode(pCode0);
$("#studentCity").val(myCity0);
});
$("#guardian1PostCode").blur(function() {
var pCode1 = $(this);
var myCity1 = getPlaceFromPostCode(pCode1);
$("#guardian1City").val(myCity1);
});
//function refactored as:
$(function getPlaceFromPostCode(pCodeX) {
var zip_in = pCodeX;
if (zip_in.val().length == 5) {
$.ajax({
url: "http://api.zippopotam.us/SE/" + zip_in.val(),
cache: false,
dataType: "json",
type: "GET",
success: function(result, success) {
// Accept the first result
var places0 = result['places'][0];
var placeName = places0['place name'];
return placeName;
},
error: function(result, success) {}
});
}
});
This returns "placeName" as undefined. Where am I going wrong?