Заполнение jqGrid возвращаемыми данными JSON и получение Uncaught TypeError Невозможно прочитать свойство '0' из неопределенного - PullRequest
1 голос
/ 28 февраля 2012

Я пытаюсь вернуть JSON из моего Spring-приложения с помощью Jackson, проанализировать его и загрузить в jqGrid.

Я получаю данные, которые возвращаются и отображаются в Chrome через расширение JSONViewer. Это выглядит правильно для меня.

Локальные тесты с массивами прошли успешно.

Вот мой JSP / HTML / JS:

 <link rel='stylesheet' type='text/css' href='http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/ui-darkness/jquery-ui.css' />
 <link rel='stylesheet' type='text/css' href='css/jqGrid/ui.jqgrid.css' />

 <script type='text/javascript' src='js/jquery-1.7.1.min.js'></script>
 <script type='text/javascript' src='js/jquery-ui-1.8.17.custom.min.js'></script>
 <script type='text/javascript' src='js/i18n/grid.locale-en.js'></script>
 <script type='text/javascript' src='js/jquery.jqGrid.min.js'></script>

 <script type='text/javascript'>

$(document).ready(function () {
    jQuery("#list").jqGrid({        
        url:"formSubmit.html",
        datatype: "json",
        height: 700,
        width: 1100,
        colNames: ['ReqID', 'Family', 'ControlID', 'Name', 'Description', 'Category','Priority', 'Notes', 'Parent'],
        colModel: [
        { name: 'reqID', index: 'reqID', width: 40 },
        { name: 'family', index: 'family', width: 100 },
        { name: 'controlID', index: 'controlID', width: 100 },
        { name: 'reqName', index: 'reqName', width: 175 },
        { name: 'requirement', index: 'requirement', width: 450,cellattr: function (rowId, tv, rawObject, cm, rdata) { return 'style="white-space: normal;"' } },
        { name: 'category', index: 'category', width: 100 },
        { name: 'priority', index: 'priority', width: 100 },
        { name: 'requirementNotes', index: 'requirementNotes', width: 100 },
        { name: 'parent', index: 'parent', width: 100 }
        ],
        rowNum: 10,
        rowList: [10, 20, 30],
        pager: '#pager',
        viewrecords: true,
        jsonReader : { repeatitems: false }
    });

    jQuery("#list").jqGrid('navGrid', '#pager', { edit: false, add: false, del: false });

});
 </script>

<table id = 'list'></table>

Вот некоторые данные, возвращаемые из моего контейнера Spring с использованием Джексона:

{
"total":"1",
"page":"1",
"records":"558",
"rows":[{
    "parent":"",
    "priority":"",
    "requirementNotes":"DummyData",
    "category":"DummyData",
    "family":"DummyData",
    "requirement":"DummyData",
    "reqID":"1",
    "controlID":"DummyData",
    "reqName":"DummyData"}]
}

Я последовательно получаю Uncaught. TypeError не может прочитать свойство '0' в неопределенном состоянии, как мой ответ в jquery.jqGrid.min.js: 23, и я в тупике.

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Попробуйте установить root: "rows" внутри jsonreader.

1 голос
/ 29 февраля 2012

Как вы можете видеть из демонстрации , которая использует данные JSON, которые вы разместили, и ваш код, jqGrid должен работать в целом.

Я могу повторить только то же, что и яписал уже в моем предыдущем комментарии: параметр url:"formSubmit.html" кажется мне очень подозрительным.Если вы вызываете некоторые динамические компоненты, ваш URL должен быть либо без расширения, например "/ myurl /", либо с другим расширением, например, ".html".Я рекомендую вам проанализировать HTTP-трафик с точки зрения Fiddler, Firebug или инструментов разработчика IE или Chrome (см. Вкладку «Сеть»).Важным может быть не только тело HTTP, но и заголовки HTTP, такие как «Content-Type».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...