Самый простой способ использовать объект json, полученный из coldfusion (из запроса)
У меня есть 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 ответ
Учитывая вашу структуру данных, вы действительно хотите пройтись по 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 будет массивом объектов с именованными свойствами.