2017-08-11 40 views
1

我曾經使用PHP打印我的數據表。當我到了一個字符串大於17個字符的特定列,我會用下面的17字符後打印橢圓:如果數據長度大於特定長度,jquery datatable

if(strlen($row[tli]) > 17){echo "<td><a href='#'>".substr(row['number'],0,17)."..."</a></td>";} 

我需要做什麼用ajax不是一回事。

$('#example1').DataTable({  
    "ajax": { 
    "url": "api/displayQnams.php", 
    "type": "POST", 
    "dataSrc": '' 
    }, 
    "columns": [ 
    { 
     "data": "number", 
     "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) 
     { 
     if(oData.number.length > 17) // here is where the initial check starts 
     {$(nTd).html("<a href='#'>'"+oData.number+"...'</a>")} // here is where it should print the ellipses after the 17th character 
     else 
     {$(nTd).html("<a href='#'>'"+oData.number+"'</a>"} 
     } 
    } 
    ] 
}); 

oData.number.length讓我在控制檯以下錯誤:

Cannot read property 'length' of undefined 

我缺少什麼,使這項工作?

預先感謝您。

回答

1

問題是一些oData爲空,並且您無法使用長度比較空值。所以我創建了一個變量,如果oData.number爲null,則將該變量設置爲「'。

這是我如何得到它的工作:

"fnCreatedCell": function (nTd, sData, oData, iRow, iCol) 
{ 
    if(oData.tli == null || oData.tli == ""){var tlinumber = '';} 
    else{var tlinumber = oData.tli;} 
    if(tlinumber.length > 17) 
    { 
    $(nTd).html("<a href='#'>'"+tlinumber.substring(0, 17)+"...'</a>") 
    } 
    else 
    { 
    $(nTd).html("<a href='#'>'"+tlinumber+"'</a>" 
    } 
}