jqGrid отображает пустую таблицу - PullRequest
0 голосов
/ 28 июля 2011

Я пытался отобразить таблицу с помощью jqGrid 4.1.2, я могу получить ответ JSON со стороны сервера, но получаю пустую таблицу.Вот мой пример данных JSON:

{
    "response":{
        "total":2,
        "page":1,
        "rows":[{
                "id":135060,
                "cell":{
                    "id":135060,
                    "name":"12"
                }
            },
            {
                "id":115060,
                "cell":{
                    "id":115060,
                    "name":"12345"
                }
            }
        ]
    },
    "status":"SUCCESS",
    "errors":[]
}

Я добавил файл jqgrid-locale-en.js , так что это не должно быть проблемой.Потратив некоторое время на это, я чувствую, что это как-то связано с форматом JSON, которого ожидает jqGrid. Если это проблема, кто-то может подсказать, как настроить jqGrid для принятия вышеуказанного формата JSON.!

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Для случая, когда проблема все еще не решена, здесь есть решение.Вы должны использовать следующее jsonReader:

jsonReader : {
    repeatitems : false,
    root: 'response.rows',
    page: 'response.page',
    total: 'response.page',
    records: function (obj) { return obj.response.rows.length; }
}

, тогда данные будут прочитаны (см. демонстрационная версия ).Я полагаю, что вы неправильно указали свойство total в данных JSON и вообще не задавали свойство records.

Более того, вы не должны устанавливать сообщения об ошибках внутри стандартного ответа.Протокол HTTP поддерживает коды состояния .Если вы обнаружили ошибку на стороне сервера, сервер должен установить в заголовке HTTP error HTTP code .В случае, когда порядок обработки данных в jqGrid выполняется другим способом , и вы должны использовать событие loadError для декодирования сообщения об ошибке и отображения результатов для пользователя.

0 голосов
/ 28 июля 2011

По умолчанию jqGrid не ожидает, что данные в ключе ячейки будут содержать пары имя: значение. Если вы хотите использовать пары «имя: значение», вам нужно будет использовать опцию jsonReader и установить для элементов повтора значение false. также убедитесь, что каждый ключ назван точно так же, как и соответствующее имя colModel.

Трудно сказать без кода. Вы должны публиковать весь свой код, когда задаете такие вопросы, но попробуйте что-то подобное, а также любые другие параметры, которые вы устанавливаете ...

$("#id").jqGrid({
    url: "url"
    mtype: "post",
    datatype: "json",
    jsonReader: {
        repeatitems: false,
        root: "response.rows",
        cell: "cell",
        id: "id",
        page: "page",
        total: "total",
        records: "records"
    },  
});

Похоже, вы также не передаете ключ записи, который представляет собой общее количество строк, возвращаемых вызовом на стороне сервера

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