我有一个 $.ajax
函数正在调用 asp.net Webmethod。
当没有返回数据时,我想用一个窗口提醒用户。
这是我在 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
}
}
},
最佳答案
移动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
.
关于json - 如何在 AJAX 中处理 AJAX 请求返回的空白 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907399/