我有一个调用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
}
}
},
答案 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 < 0
为false
)。
其他问题:
我建议您修复JSON生成过程。如果msg.d
应该包含数组,则不要为其分配字符串。您的JSON应该看起来像
{"d": []}
似乎你以某种方式对数据进行了双重编码。
如果你不这样做,我至少会使用JSON.parse
代替eval
。