I am trying to use the following API https://postcodes.io/ and perform a bulk lookup using AJAX.
I can use the syntax provided in the documents to do a single postcode lookup like so:
$.ajax({
type: "POST",
url: 'https://api.postcodes.io/postcodes/BS16AA',
success: function (response) {
console.log(response);
},
error: function (xhr, ajaxOptions, thrownError) {
var msg = '';
if (xhr.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (xhr.status == 404) {
msg = 'Requested page not found. [404]';
} else if (xhr.status == 500) {
msg = 'Internal Server Error [500].';
} else if (thrownError === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (thrownError === 'timeout') {
msg = 'Time out error.';
} else if (thrownError === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + xhr.responseText;
}
}
});
However the example for "bulk lookups" is much less helpful (it looks like it wants an object with an array under a property called "postcodes: [myArrayHere]"
) I haven't managed to find a working example or create one myself. Using the example code above and the syntax for the bulk lookup i'd like to perform only a few ajax calls to lookup around 200 postcodes (the site says the limit is 100 at a time so I can break them in to several arrays). The time it takes to do a lookup for 200 postcodes in a loop is not really feasible for my project.
You need to use it like below
$.ajax({
type: "POST",
url: 'https://api.postcodes.io/postcodes/',
data: { postcodes: ["code1", "code2"] }
success: function (response) {
console.log(response);
},
error: function (xhr, ajaxOptions, thrownError) {
var msg = '';
if (xhr.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (xhr.status == 404) {
msg = 'Requested page not found. [404]';
} else if (xhr.status == 500) {
msg = 'Internal Server Error [500].';
} else if (thrownError === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (thrownError === 'timeout') {
msg = 'Time out error.';
} else if (thrownError === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + xhr.responseText;
}
}
});
See the test case they have which show the expected data
https://github.com/ideal-postcodes/postcodes.io/blob/373fda002692542f21330088154d3d4965a1cd65/tests/filter.integration.js#L33
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With