检查Ajax json响应数据

时间:2016-08-17 11:53:18

标签: javascript jquery json ajax

我在jsp页面中使用jqueryAjax函数来显示html表。该函数将响应作为json对象返回。我使用json对象,迭代它并显示列值。但是如果字段值为空,那么html表中的相应值被指定为'undefined'以下是我的示例代码

     $.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”。我想要应用程序如果数据不可用,则显示空或空白字段。有没有办法实现同样的目标。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分: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>';

答案 1 :(得分:3)

以这种方式设置默认值:

SELECT c.customer_id
FROM CUSTOMERS c JOIN CUSTOMERCARDS cc ON c.customer_id = cc.customer_id
group by c.customer_id
having count(*) = 2;

通过提交的setable默认值,可轻松重组:

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

答案 2 :(得分:-1)

你可以使用它,

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