2016-11-16 45 views
2

为什么我在ajax.sucess的data.length中获取undefined?Ajax成功:数据长度未定义

下面是代码,一些地区已经为简洁起见移除了:

$.ajax({ 
    data: JSON.stringify(data), 
    url: urlGetProviderQualificationTimeData, 
    type: 'POST', 
    contentType: "application/json; charset=utf-8", 
    success: function (data) { 
     if (data.length > 0) { 
      $("#loading").hide(); 
      $("#providerqualification-main").show(); 
      $("#tblProviders").show(); 
      SetHeaderFields(data); 
     } else { 
      $("#NoRecordFound").show(); 
      $("#providerqualification-main").hide(); 
     } 
    }, 
    complete: function (e) { 
     $("#loading").hide(); 
    } 
}); 

enter image description here

+0

检查一样,如果(data.hasOwnProperty(“地址”)){//此处代码} –

+0

的可能的复制[如何获得对象长度(HTTP://计算器.com/questions/5533192/how-to-get-object-length) –

+0

控制响应数据。 如果它是一个数组或字符串,数据的长度将被定义。 如果响应是一个对象,请使用'Object.keys(data).length' – Harish

回答

3

data对象不具有length属性(对象的没有一个作为阵列做),所以它是undefined

鉴于代码的上下文,您只需检查返回的对象是否包含一些数据。如果是这样,你可以使用这个:

success: function (data) { 
    if (!data || !Object.keys(data).length) { 
     $("#NoRecordFound").show(); 
     $("#providerqualification-main").hide(); 
    } else { 
     $("#loading").hide(); 
     $("#providerqualification-main").show(); 
     $("#tblProviders").show(); 
     SetHeaderFields(data); 
    } 
}); 
+0

这解决了我的问题!谢谢 –

+0

这是否意味着如果任何属性为空,这将是真实的? –

+0

不,它检查对象是否存在并且它至少有一个属性。该属性的值可以为null,它仍然会通过有效的 –