0

我正在尝试在 jqgrid 中显示 json 数据,但没有得到任何行。

这是我的网格:

$('#jqList').jqGrid({
        url: '/my/url',
    datatype: 'json',
    colNames:['field1', 'field2'],
    colModel:[
        {name:'field1',index:'field1', width:200},
        {name:'field2',index:'field2', width:300}
    ],
    pager: '#jqPager',
        rowNum: 20,
        rowList: [10, 20, 30, 50],
        height: '100%',
        viewrecords: true,
        jsonReader: {
            repeatitems: false,
            root: function (obj) { return obj; },
            page: function (obj) { return 1; },
            total: function (obj) { return 1; },
            records: function (obj) { return obj.length; },
            id: 'id'
        }
});

我可以在浏览器中访问我的 url,它会显示如下内容:

    {"rows": [
        {"id": "3", "field1": "blabla", "field2": "blabla"},
        {"id": "10", "field1": "blabla", "field2": "blabla"},
        {"id": "4", "field1": "blabla", "field2": "blabla"},
        {"id": "8", "field1": "blabla", "field2": "blabla"}
    ]
}

但是当我显示我的网格时,我没有我所说的任何数据。如果我检查控制台,我的 url 上有 500 错误(在 url 中添加了一些参数)

我希望我提供了足够的信息。

编辑 萤火虫控制台说:

"NetworkError: 500 Internal Server Error - http://localhost/path/to/my/url?_search=false&nd=1373439192511&rows=20&page=1&sidx=&sord=asc"

我在 apache 服务器上使用 PHP

php代码:

header('Content-type: application/json');
foreach ($cars as $k => $v) {
    $tab['rows'][$k] = $v['Car'];
}
echo json_encode($tab);

谢谢

4

3 回答 3

1

jqGrid生成的URL好像是:

http://localhost/path/to/my/url?_search=false&nd=1373439192511&rows=20&page=1&sidx=&sord=asc

在服务器端引起某种错误(我不知道您使用的是哪种服务器端技术,但例如在 ASP.NET 的情况下,这种响应意味着存在未处理的异常)。

您已声明干净的 URL,应如下所示:

http://localhost/path/to/my/url

工作正常。在这种情况下,如果您不需要 jqGrid 添加的参数,您可以尝试通过告诉 jqGrid 不要发送它们来解决问题:

$('#jqList').jqGrid({
    url: '/my/url',
    datatype: 'json',
    colNames:['field1', 'field2'],
    colModel:[
        {name:'field1',index:'field1', width:200},
        {name:'field2',index:'field2', width:300}
    ],
    pager: '#jqPager',
    rowNum: 20,
    rowList: [10, 20, 30, 50],
    height: '100%',
    viewrecords: true,
    prmNames: {
        page: null,
        rows: null,
        sort: null,
        order: null,
        search: null,
        nd: null
    },
    jsonReader: {
        repeatitems: false,
        root: function (obj) { return obj; },
        page: function (obj) { return 1; },
        total: function (obj) { return 1; },
        records: function (obj) { return obj.length; },
        id: 'id'
    }
});

这不是一个完美的解决方案(我们仍然不知道您的服务器为什么会产生内部错误以及如何解决),但它可能会使您的代码正常工作。如果您想解决服务器端问题,我们必须更多地了解服务器上发生的事情。

于 2013-07-10T08:58:45.423 回答
0

通常当我收到 500 个错误时,这意味着 javascripts 或 mvc 控制器的 url 路径是错误的。

第一件事是第一件事,

你的数据图,它和你的网格在同一个文件中吗?如果是,则给它一个名称并在 url 中引用该名称。如果您从数据库中获取数据,那么您可能使用控制器来获取数据并将其转换为 json 可序列化对象。所以 url 应该指向那个控制器的位置。

于 2013-11-09T18:29:20.293 回答
0

似乎 jqGrid 正在等待这样的 url:path/to/my/json/url 尽管我url : path/to/my/url 在开发服务器上给出了......并且url : path/to/my/url在 beta 服务器上工作正常......

我真的不明白为什么,如果 url 是“错误的”,为什么错误不是 404 ?

无论如何它现在工作正常......

谢谢你的时间

于 2013-07-15T06:58:32.910 回答