4

我试图json在 jQuery 中使用 ajax 获取一些类型的数据,所以我编写了以下代码:

$.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的时候!ifldLayer.fadeOut('slow');

更新: 结果console.log(data)是:[null]

4

2 回答 2

4

您将返回一系列结果。在您描述的问题案例中,您将返回一个包含单个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元素的数组。但是,如果您无法控制服务器代码,那么我上面提供的客户端解决方案是您最好的选择。

于 2013-05-28T14:44:59.450 回答
2

像这样简单检查

if (data)   {
    ldLayer.fadeOut('slow');
} else {
    alert('no data');
}
于 2013-05-28T14:34:29.157 回答