利用coldfusion最简单的方法返回json对象(来自查询)

时间:2012-02-13 21:38:42

标签: jquery json coldfusion cfc

我有一个CFC以JSON格式返回一个查询对象,如下所示:

{
 "COLUMNS":["CMADDR","CMBILL","CMCRLIMIT","CMCRREVIEW","CMCRTERMS","CMCRUPDATE","CMCURR"],
 "DATA":[[1.2004856E7,3.2004856E7,0,"January, 01 1959 00:00:00","N\/30",null,"USD",null,false,false,false,"",0,"","US", ...],
        [2.2045505E7,3.2004583E7,4000,"January, 01 1959 00:00:00","1\/10N30",null,"USD",null,false,false....]]
}
为了结构起见,

数据已被缩短

但是我收到了一个带有列&的jSON对象。数据

使用jQuery访问此数据的最佳方法是什么?请原谅我的经验,因为过去我只是使用了更简单的结构,而且我通常自己定义它们,这样CFC就会将此输出返回给我,我不得不使用它并以最终结果迭代它是一个数据表。

我尝试了以下内容,但到目前为止得到了未定义的值:

// ajax calls .. this is on success..
// ...
function(data) {
    //alert('got data back! \n'+data);
    var obj = jQuery.parseJSON(data);
    $.each(obj, function(index, itemData) {
    $('#modal-table-listing > tbody:last').append('<tr>' +
        '<td>[Select]</td>' +
        '<td>'+ itemData.cmAddr +'</td>' +
        '<td>'+ itemData.adName +'</td>' +
        '<td>'+ itemData.adState +' - '+ itemData.adCity +' - '+ itemData.adZip +'</td></tr>');
    });

    console.log(obj);
}

如果有意义的话,我很乐意使用columns对象来引用相关数据。

1 个答案:

答案 0 :(得分:3)

鉴于您的数据结构,您确实希望循环遍历obj.data。您返回的对象具有两个属性。一个描述了您的列,下一个是结果数组。

var obj = jQuery.parseJSON(data);
$.each(obj.DATA, function(index, itemData) {
$('tbody:last').append('<tr>' +
    '<td>[Select]</td>' +
    '<td>'+ itemData[0]+'</td>' +
    '<td>'+ itemData[1] +'</td>' +
    '<td>'+ itemData[2] +' - '+ itemData[3] +' - '+ itemData[4] +'</td></tr>');
});

在给定数据的情况下,我不知道哪个列是哪个索引。但你可以通过obj.columns.indexOf('CMADDR');或类似的东西弄明白,这会给你0.

修改 您可以轻松地使用Underscore.js编写快速地图缩小以获得您想要的格式。像

这样的东西
myData = _.map(obj.data, function(row){ 
             var item = {"column1" : row[0],
                         "column2" : row[1]}; 
              return item;
             }); `

这将导致myData成为具有命名属性的对象数组。