2016-11-16 94 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,它仍然會通過有效的 –

相關問題