jqGrid呈现空表

时间:2011-07-28 02:21:56

标签: javascript jquery json jqgrid

我一直在尝试使用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 文件,因此不应该是问题。花了一些时间在这之后我觉得它与jqGrid预期的JSON格式有关,如果那是问题,有人可以请告诉我如何配置jqGrid以接受上述JSON格式。

谢谢!

2 个答案:

答案 0 :(得分:1)

对于问题仍然没有解决的情况,这里是解决方案。您应该使用以下jsonReader

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

然后将读取数据(参见the demo)。我假设您在JSON数据中使用了不正确的total属性,而根本没有设置records属性。

此外,您不应在标准响应中设置错误消息。 HTTP协议支持status codes。如果您在服务器端检测到错误,则服务器应在HTTP标头中设置error HTTP code。如果jqGrid中的数据处理顺序为another way,您应该使用loadError事件来解码错误消息并显示用户的结果。

答案 1 :(得分:0)

默认情况下,jqGrid不希望单元格键中的数据包含name:value pairings。如果要使用name:value pairings,则需要查看使用jsonReader选项并将repeatitems设置为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"
    },  
});

看起来你没有传回记录密钥,也就是服务器端调用返回的总行数