Jquery don';从ajax返回数据时,t work data.length

Jquery don';从ajax返回数据时,t work data.length,jquery,ajax,Jquery,Ajax,我试图在jQuery中使用ajax在jsontype中获取一些数据,因此我编写了以下代码: $.ajax({ url: link.attr('href'), type: 'post', data: 'post=true', dataType: 'json', success: function(data){ if (data.length > 0) { ldLayer.fadeOut('slow');

我试图在jQuery中使用ajax在
json
type中获取一些数据,因此我编写了以下代码:

$.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');
        }
    }
});
但是当
数据
null
时,
if
将为true,并且
ldLayer.fadeOut('slow')将运行

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

只需像这样检查即可

if (data)   {
    ldLayer.fadeOut('slow');
} else {
    alert('no data');
}

您将获得一系列结果。在您描述的问题案例中,您得到的是一个包含单个
null
元素的数组。空数组(
[]
)的长度为0,但具有单个null元素(
[null]
)的数组的长度为1

在客户端中,您可以检查数组的任何元素是否为非空:

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');
    }
}
成功:函数(数据){
var foundSomething=false;

对于(var i=0;ii如果数据是
null
,它在获取
数据时应该失败。长度
。您确定数据是
null
?它不是字符串
'null'
?在这种情况下,它传递正确并且有意义。根据您的编辑,
数据
是一个包含单个
null
成员的数组,因此它的
长度
正确ty为1。
length
只有在数组为空时才能为0——此数组不是空的,因为它有一个成员。
[null]
[]
。我更新了我的问题,我编写了
控制台.log
结果。我也尝试过
数据=='null'
数据==null
,但不起作用。尝试将请求的数据类型更改为text和console。在成功回调中注销数据…这应该会给您一些关于出现问题的线索@apsillers谢谢,那么我如何在这种模式下进行检查?您能告诉我数据中有什么吗?
控制台.log(data)
结果是:
[null]
当我尝试
警报(data)时
我将得到一个空窗口,这个问题可能有多个原因。MIME类型或返回null作为响应等。请交叉检查onceThanks,正如您所说,我的服务器端编程有问题,所以我更改了该问题并解决了问题,但您的代码在更改服务器端代码之前对我有效,所以您的代码适用于我的任务离子。