检查ajax请求是否为空

时间:2014-02-09 15:54:32

标签: javascript jquery ajax geocoding mapquest

我使用mapquest的免费地理编码API

我想检查请求是否已成功,但未返回任何数据。

我在表单字段中键入“vdfsbvdf54vdfd”(只是一个愚蠢的字符串)作为地址。 我期待像“抱歉,错误输入”这样的提醒。警报永远不会发生。

这是我的代码段

$.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
                          )}

我尝试了if (geoclng=="") {alert("Sorry, wrong input");}

if (response.length=0) {alert("Sorry, wrong input");}

以及if ($.isEmptyObject(response)) {alert("Sorry, wrong input");}

并且警报永远不会发生。

如果有帮助,当我提醒我回复时,我会object Object

提前致谢

3 个答案:

答案 0 :(得分:3)

删除网址周围的额外单引号,并检查位置数组的长度:

$.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");
     }
  )}

当你对http://open.mapquestapi.com/geocoding/v1/address?key=012进行调用时,它会返回一个对象,无论是否有匹配。该对象的位置数组的内容将为空,未找到任何内容。

response.length == 0response == ""将评估为false,因为始终会返回响应。

答案 1 :(得分:0)

尝试使用以下代码检查成功/失败请求。

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.get("example.php", function() {
    alert("success");
})
.done(function() {
    alert("second success");
})
.fail(function() {
    alert("error");
})
.always(function() {
    alert("finished");
});
// Perform other work here ...
// Set another completion function for the request above
jqxhr.always(function() {
    alert("second finished");
});

有关详细信息,请参阅此链接https://api.jquery.com/jQuery.get/

答案 2 :(得分:0)

尝试在ajax代码中添加此内容:

$.ajax({
  type: "POST",
  url: "http://open.mapquestapi.com/geocoding/v1/address?key=012",
  data: { 
     location: ad, maxResults: 1
  }
})

添加此项(位于data参数下方)

success: function (response) {
  if (response == '') {
    alert('Sorry!');
  }
}

这将在成功事件上运行,并将检查从服务器返回的响应。然后用if else块来测试它的值。

我想转发您,以了解有关jQuery Ajax API的更多信息:http://api.jquery.com/jquery.ajax/