Ajax не возвращает JSON, но объект

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

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

$(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, который я сделал. Второе - возвращение Json Ajax. Chrome говорит мне, что это объект, а не массив (Json).

Как я могу преобразовать объект (результат) в структуру массива, такую ​​как данные?введите описание изображения здесь

3 ответа

Решение

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

function loadData(result) {
    grid = new Slick.Grid("#myGrid", result.d, columns, options); 
}
var data = [];
    for(var i in result) {
        data.push(result[i]);
    }

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

Попробуйте изменить строку:

var data = [];

чтобы:

 var data = new Array();

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

Другие вопросы по тегам