Jquery don';从ajax返回数据时,t work data.length
我试图在jQuery中使用ajax在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');
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,正如您所说,我的服务器端编程有问题,所以我更改了该问题并解决了问题,但您的代码在更改服务器端代码之前对我有效,所以您的代码适用于我的任务离子。