jqgrid:无法显示json数据

时间:2013-07-10 07:52:16

标签: json jqgrid

我试图在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'
        }
});

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

    {"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"}
    ]
}

但是当我显示我的网格时,我没有像我说的那样有任何数据。 如果我检查控制台,我的网址上有500错误(有一些参数添加到网址)

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

修改 firebug控制台说:

"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);

由于

3 个答案:

答案 0 :(得分:1)

似乎jqGrid生成的URL:

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

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

您已声明干净的网址,如下所示:

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'
    }
});

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

答案 1 :(得分:0)

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

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

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

感谢您的时间

答案 2 :(得分:0)

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

首先是第一件事,

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