我使用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
。
提前致谢
答案 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 == 0
或response == ""
将评估为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/