У меня есть кусок кода и я пытаюсь заполнить свой slickgrid данными json, которые возвращает мой веб-сервис. но сетка не заполняется. Возвращенные данные пусты, так как я не вижу ничего в окне предупреждения.
$(function ()
{
var slickdata = [];
$.getJSON("comm/j/abc?action=hi", function(data)
{
// data is a JavaScript object now. Handle it as such
for (var i=0;i<data.length;i++)
{
alert("slickdata i" );
slickdata[i] =
{
month: data[i].month,
teamed: data[i].teamed,
net: data[i].net
};
}
});
alert(slickdata);
// dataView = new Slick.Data.DataView({ inlineFilters: true });
grid = new Slick.Grid("#myGrid", slickdata, columns, options);
// grid.setSelectionModel(new Slick.RowSelectionModel());
})
Вывод моего вызова службы ниже (JSONData)
{
p: {
month: "May-2014",
teamed: "Y",
net: 100000
}
}
На консоли не отображается ошибка
Если вы ожидаете массив объектов (я немного запутался в вашей структуре данных), вы можете перебирать его с помощью цикла for, но в соответствии с вашим выходом JSON нет массива, и вы просто получаете объект. Поэтому вам нужно только получить этот объект и использовать его:
var slickdata = [];
$.getJSON("comm/j/abc?action=hi", function(data) {
myData = data.p;
slickdata[0] = {
month: myData.month,
teamed: myData.teamed,
net: myData.net
};
});
Во-первых, вы не можете перебирать объект по его длине, если объект не имеет длины. В вашем случае вы можете просто использовать data.p.
slickdata[0] = data.p; // this replaced your entire for loop
Кроме того, вам нужно инициализировать сетку внутри обратного вызова успеха, иначе она не сможет получить доступ к slickdata.
$(function(){
$.getJSON("comm/j/abc?action=hi", function(data) {
grid = new Slick.Grid("#myGrid", [data.p], columns, options);
});
});
Я понятия не имею, может ли сетка работать с этими данными.
Вы уверены, что ничего не получаете от webservice? Попробуйте добавить это прямо перед циклом for
:
alert(data.toSource());
Затем вместо alert(slickdata);
IMHO вы должны написать alert(slickdata.toSource());
так как это массив объектов.
data.length
не определена ...