2014-02-09 179 views
1

我使用Mapquest服務檢查是否Ajax請求是空

我要檢查,如果該請求是sucessfull的免費地理編碼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

在此先感謝

回答

2

周圍的URL刪除多餘的單引號和檢查的位置數組的長度:

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

非常感謝細節,順便說一句,URL上額外的單引號是將其標記爲代碼。不管怎樣,謝謝 – slevin

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/

+0

謝謝,但我已經有了這種結構的代碼。我有'.done'和'.fail'。我認爲一個請求是成功的,並返回空數據,所以與'.done'部分有關。 – slevin

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/

相關問題