2013-04-09 26 views
2

我有一個$.ajax函數調用了asp.net Webmethod。如何在AJAX中處理來自AJAX請求的空白返回的JSON數據

當沒有數據返回時,我想通過一個窗口提醒用戶。

這是返回的JSON字符串我在Firebug看到:

{"d": "[]"} 

下面是功能的snipet -

success: function (msg) { 
    var data = eval(msg.d); 
    var i = 0; 
    var Name; 
    for (i = 0; i < data.length; i++) { 
     if (data.length == 0) { 
      alert('oops no data has been returned sorry.'); 
     } else { 
      //do the good stuff 
     } 
    } 
}, 
+2

左側的所有空間總是如此嗎?我發現左對齊的代碼更容易閱讀。 – 2013-04-09 16:34:07

回答

1

移動if-else語句for環外else分支內的for環路:

if (data.length == 0) { 
    alert('oops no data has been returned sorry.'); 
} else { 
    for (i = 0; i < data.length; i++) { 
     //do the good stuff 
    } 
} 

在你的代碼中,if語句將永遠不會被執行,如果data是空的,因爲永遠不會執行for循環體(0 < 0false)。


其他問題:

我建議,以解決您的JSON生成過程。如果msg.d應該包含數組,則不要爲其分配字符串。您的JSON應該像

{"d": []} 

好像你進行雙重編碼數據以某種方式。

如果你不這樣做,我會至少使用JSON.parse而不是eval

+0

JSON.Parse似乎比eval慢。但Felix工作,並感謝所有的答覆! – 2013-04-09 17:08:35

+0

@CoolDude:好吧,如果你正確地創建了JSON,你可以避免這兩種情況:) – 2013-04-09 17:12:43

1
function webMethodCall(){ 
return $.getJSON('myURL',{/*my data*/}).done(function(msg){ 
if(!msg || !msg.d.length){ 
     alert('Emptydata!') 
    } 
}); 
};