我有一个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
对象引用相关数据。 最佳答案
给定您的数据结构,您真的想遍历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是具有命名属性的对象数组。