2012-02-13 5 views
1

У меня CFC Thats возвращающимся объект запроса в формате JSON, выглядит следующим образом:Самый простой способ использовать ColdFusion вернулся 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 объект для ссылки на соответствующие данные, если это имеет смысл.

ответ

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 будет массивом объектов с именованными свойствами.

+1

Я принял это, но только что закончил использовать индекс для ссылки на поля, возвращенные (результат был я сократил мои возвращенные столбцы во что-то легко управляемое). Я надеялся, что есть быстрый/прямой способ сопоставить объект для использования столбцов без включения таких вещей, как 'underscore.js', поскольку я раньше не использовал эту библиотеку. – Jakub

Смежные вопросы