Самый простой способ использовать объект json, полученный из coldfusion (из запроса) - PullRequest
1 голос
/ 14 февраля 2012

У меня есть 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 Ответ

3 голосов
/ 14 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...