2016-08-17 98 views
0

在jsp頁面中使用jqueryAjax函數來顯示html表格。該函數將響應作爲json對象返回。我使用json對象,迭代相同並顯示列值。但是,如果字段值是空的,則指定的HTML表中的相應值爲「未定義」下面是我的示例代碼檢查Ajax json響應數據

 $.each(data1, function (i, item) { 
     trHTML += '<tr><td >' + item.appnName + '</td><td>' + item.Defectsin2014 + '</td><td>' + item.Defectsin2015 + '</td><td>'+ 
     item.DefectsasperBenchmarks +'</td><td>'+item.costDefect + '</td><td>'+ item.req2014 + '</td><td>'+ item.req2015 +'</td><td>' + 
     item.ba+ '</td><td>'+ item.config+'</td><td>'+ item.Financials+ '</td><td>' + item.bReports + '</td><td>'+ 
     item.qa + '</td></tr>'; 
    }); 
    $('#records_table').append(trHTML); 

在上文中,如果一個特定的字段不在JSON例如,購,如果item.req2015數據對特定行不可用,則html表將相應的字段顯示爲'undefined'。如果數據不可用,我希望應用程序顯示空白或空白字段。有什麼辦法可以達到同樣的效果嗎?

任何幫助,這是非常感謝。

+0

你必須檢查每個項目'undefined'情況。檢查這[鏈接](http://stackoverflow.com/questions/10653367/how-to-check-undefined-value-in-jquery) – abpatil

回答

4

檢查屬性,並給他們在使用它們之前的默認值。

$.each(data1, function (i, item) { 
    item.appnName  = item.appnName  || "&nbsp;"; 
    item.Defectsin2014 = item.Defectsin2014 || "&nbsp;"; 
    item.Defectsin2015 = item.Defectsin2015 || "&nbsp;"; 
    item.costDefect = item.costDefect || "&nbsp;"; 
    item.req2014  = item.req2014  || "&nbsp;"; 
    item.req2015  = item.req2015  || "&nbsp;"; 
    item.ba   = item.ba   || "&nbsp;"; 
    item.config  = item.config  || "&nbsp;"; 
    item.Financials = item.Financials || "&nbsp;"; 
    item.bReports  = item.bReports  || "&nbsp;"; 
    item.qa   = item.qa   || "&nbsp;"; 

    trHTML += '<tr><td >' + item.appnName + '</td><td>' + item.Defectsin2014 + '</td><td>' + item.Defectsin2015 + '</td><td>'+ 
    item.DefectsasperBenchmarks +'</td><td>'+item.costDefect + '</td><td>'+ item.req2014 + '</td><td>'+ item.req2015 +'</td><td>' + 
    item.ba+ '</td><td>'+ item.config+'</td><td>'+ item.Financials+ '</td><td>' + item.bReports + '</td><td>'+ 
    item.qa + '</td></tr>'; 
}); 
$('#records_table').append(trHTML); 

甚至更​​短可能與內聯決定:

trHTML += '<tr><td >' + (item.appnName || "&nbsp;") + '</td><td>' + (item.Defectsin2014 || "&nbsp;") + '</td><td>' + (item.Defectsin2015 || "&nbsp;") + '</td><td>'+ 
(item.DefectsasperBenchmarks || "&nbsp;") +'</td><td>'+(item.costDefect || "&nbsp;") + '</td><td>'+ (item.req2014 || "&nbsp;") + '</td><td>'+ (item.req2015 || "&nbsp;") +'</td><td>' + 
(item.ba || "&nbsp;") + '</td><td>'+ (item.config || "&nbsp;")+'</td><td>'+ (item.Financials || "&nbsp;") + '</td><td>' + (item.bReports || "&nbsp;") + '</td><td>'+ 
(item.qa || "&nbsp;") + '</td></tr>'; 
3

設置默認值是這樣的:

<td>'+ (item.req2015||'&nbsp;') + '</td> 

通過申請可置默認值,容易reorganiziable:

var fdef = [ 'appnName  ',"&nbsp;" 
    ,'Defectsin2014', "&nbsp;" 
    ,'Defectsin2015',"&nbsp;" 
    ,'costDefect ', "&nbsp;" 
    ,'req2014  ',"&nbsp;" 
    ,'req2015  ', "&nbsp;" 
    ,'ba   ',"&nbsp;" 
    ,'config  ', "&nbsp;" 
    ,'Financials ',"&nbsp;" 
    ,'qa   ', "&nbsp;" 
    ]; 

function buildLine(item) { 
     var out = []; 
    for (var i= 0,l=fdef.length;i<l;++i) { 
     out.push(item[fdef[i][0]] || fdef[i][1]); 
    } 
    return '<tr><td>' + out.join('</td><td>') + '</td></tr>' 
} 
0

您可以使用此,

if(item.hasOwnProperty('req2015')){ 
    //add it 
}