Jquery.getJson чего-то не хватает? [Дубликат]

0

У меня есть кусок кода и я пытаюсь заполнить свой 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
    }
}

На консоли не отображается ошибка

  • 2
    Прежде всего, не используйте оповещения для устранения неполадок. Во-вторых, попробуйте console.log (data). «slickdata i» - текстовая строка.
  • 0
    data.length не определена ...
Показать ещё 1 комментарий
Теги:
slickgrid

3 ответа

0
Лучший ответ

Если вы ожидаете массив объектов (я немного запутался в вашей структуре данных), вы можете перебирать его с помощью цикла 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
  };
 });
0

Во-первых, вы не можете перебирать объект по его длине, если объект не имеет длины. В вашем случае вы можете просто использовать 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);
    });
});

Я понятия не имею, может ли сетка работать с этими данными.

0

Вы уверены, что ничего не получаете от webservice? Попробуйте добавить это прямо перед циклом for:

alert(data.toSource());

Затем вместо alert(slickdata); IMHO вы должны написать alert(slickdata.toSource()); так как это массив объектов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню