我有一个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
对象来引用相关数据。
答案 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成为具有命名属性的对象数组。