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