check if ajax request is empty

11,112

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.

Share:
11,112
slevin
Author by

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, 2022

Comments

  • slevin
    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
    slevin about 10 years
    Thanks a lot for the details, By the way the extra single quotes on the URL was to mark it as code. Anyway thanks
  • slevin
    slevin about 10 years
    Thanks, 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.