我试图用jQuery中的ajax获取json
类型的一些数据,所以我写了这段代码:
$.ajax({
url: link.attr('href'),
type: 'post',
data: 'post=true',
dataType: 'json',
success: function(data){
if (data.length > 0) {
ldLayer.fadeOut('slow');
}else{
alert('no data');
}
}
});
但当data
为null
时,if
将为真且ldLayer.fadeOut('slow');
将会运行!
更新
console.log(data)
结果为:[null]
答案 0 :(得分:3)
你得到了一系列结果。在您描述的问题案例中,您将获得一个包含单个null
元素的数组。空数组([]
)的长度为0,但是具有单个空元素([null]
)的数组的长度为1。
在客户端中,您可以检查数组的任何元素是否为非null
:
success: function(data){
var foundSomething = false;
for(var i=0; i<data.length; ++i) {
if(data[i] !== null) foundSomething = true;
break;
}
if(foundSomething) {
ldLayer.fadeOut('slow');
}else{
alert('no data');
}
}
然而,更好的方法是修复服务器端代码,使其不会发送带有null
元素的数组。但是,如果您无法控制服务器代码,我上面提供的客户端解决方案是您最好的选择。
答案 1 :(得分:2)
只需像这样检查
if (data) {
ldLayer.fadeOut('slow');
} else {
alert('no data');
}