如何在AJAX中处理来自AJAX请求的空白返回JSON数据

时间:2013-04-09 16:26:53

标签: json jquery

我有一个调用asp.net Webmethod的$.ajax函数。

如果没有返回数据,我想用一个窗口提醒用户。

这是我在FireBug中看到的返回的JSON字符串:

{"d": "[]"}

以下是该功能的狙击 -

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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

if-else语句移到for循环之外,将for循环移到else分支之内:

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