2013-12-11 3 views
1

Я хочу загрузить данные из WCF в сетку (SlickGrid). Этот код работает, если я вручную сделаю Json и загружу его в сетку. Но если я использую переменную, которую я получаю из JQuery - ajax, я получаю объект, встроенный в массив.Ajax не возвращает JSON, но объект

Если я запустил следующий код.

$(function() { 
    $.ajax({ 
     url: "DataService.svc/DoWork", 
     type: "POST", 
     contentType: "application/json", 
     dataType: 'JSON', 
     success: loadData, 
     error: showError 
    }); 
}); 

function loadData(result) { 
    var data = []; 
     data[0] = { 
      BO: "Task ", 
      Agreement: "5 days" 
     }; 
    console.log(data); 
    console.log(result); 
    grid = new Slick.Grid("#myGrid", data, columns, options); 
} 

У меня есть 2 консольных журнала. Первый журнал - это Json I. Второй - возвращение Json Ajax. Chrome говорит мне, что это объект вместо массива (Json).

Как преобразовать объект (результат) в структуру массива, такую ​​как данные? enter image description here

+1

'result.doWork' будет массив, который вы хотите –

+1

Вы пробовали использовать' $ .parseJSON (результат) '? –

+0

@PrasathK Если я делаю console.log (result.doWork); Я получаю unidentified в журналах – Freddy

ответ

0

Я решил это, добавив .d после результата. Это возвращает правильный объект для SlickGrid.

function loadData(result) { 
    grid = new Slick.Grid("#myGrid", result.d, columns, options); 
} 
1

попытка изменения линии:

var data = []; 

к:

var data = new Array(); 

внутри функции LoadData

+0

Он работает с данными var. теперь я хочу использовать результат, преобразованный в массив, такой как данные. – Freddy

+1

использовать push для размещения каждого элемента внутри нового массива –

1
var data = []; 
    for(var i in result) { 
     data.push(result[i]); 
    } 

(если D не достаточно)

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