check if ajax request is empty
Remove the extra single quotes around the url and check for the length of the locations array:
$.ajax({
type: "POST",
url: "http://open.mapquestapi.com/geocoding/v1/address?key=012",
data: { location: ad, maxResults: 1}
})
.done(function( response ) {
alert(response.results[0].locations.length); //if greater than zero, you have results
if( response.results[0].locations.length > 0 ){
var geoclng = response.results[0].locations[0].latLng.lng;
var geoclat = response.results[0].locations[0].latLng.lat;
//now use lon/lat on map etc
} else {
alert("Sorry, wrong input");
}
)}
When you run a call to http://open.mapquestapi.com/geocoding/v1/address?key=012, it is going to return an object whether or not there were matches. The contents of that object's locations array will be empty is nothing was found.
response.length == 0
or response == ""
will evaluate to false
since there is always a response returned.
slevin
aspiring web developer - html5 and web mapping enthusiast. mainly work with apache, geoserver, openlayers, html5, php, mysql, postgresql/postgis, javascript, jquery SOreadytohelp
Updated on June 04, 2022Comments
-
slevin almost 2 years
I use the free geocoding API of mapquest
I want to check if the request is sucessfull, but returned no data.
I type "vdfsbvdf54vdfd" (just a silly string) as adress in a form field. I expect an alert like so "Sorry, wrong input". Alert never happens.
This is my code snippet
$.ajax({ type: "POST", url: "`http://open.mapquestapi.com/geocoding/v1/address?key=012`", data: { location: ad, maxResults: 1} }) .done(function( response ) {alert(response); var geoclng = response.results[0].locations[0].latLng.lng; var geoclat = response.results[0].locations[0].latLng.lat; if (geoclng=="") {alert("Sorry, wrong input");} //now use lon/lat on map etc )}
I tried
if (geoclng=="") {alert("Sorry, wrong input");}
also
if (response.length=0) {alert("Sorry, wrong input");}
and also
if ($.isEmptyObject(response)) {alert("Sorry, wrong input");}
and alert never happens.
If it helps, when I alert the response I get
object Object
.Thanks in advance
-
slevin about 10 yearsThanks a lot for the details, By the way the extra single quotes on the URL was to mark it as code. Anyway thanks
-
slevin about 10 yearsThanks, but I already have this structure of code. I have the
.done
and.fail
. I ment that a request is successfull and returns empty data, so has to do with the.done
part.