jqgrid:can';不显示json数据

jqgrid:can';不显示json数据,json,jqgrid,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

我试图在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中添加了一些参数)

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

编辑 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);

谢谢

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

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

尽管我给出了
url:path/to/my/json/url,但jqGrid似乎在等待这样的url:path/to/my/url
在开发服务器上。。。而且
url:path/to/my/url
在beta服务器上运行良好

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

不管怎样,它现在工作得很好


感谢您的时间

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

第一件事是第一件事


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

对不起,我的问题很糟糕,您可以编辑问题并详细说明您的500错误(消息等)。我已经添加了firebug控制台日志谢谢。我在apache服务器上使用php。我尝试了您的prmNames方法,仍然有500错误,但url现在没有任何参数。@ThEBiShOp然后您需要调试并向我们提供有关服务器端代码的更多信息。问题就在这里,在客户端我们无能为力。检查您的Apache日志以了解starter。在Apache错误日志中,我没有任何相关信息(2小时前丢失的favicon的最后一个条目),在访问日志中我有:
127.0.0.1---[10/Jul/2013:11:21:59+0200]“GET/my/url HTTP/1.1”500 169
@ThEBiShOp这意味着Apache将此500视为应用程序生成的响应,您需要更深入地挖掘,以便在PHP中找到引发错误的地方。这是一个简短的PHP错误日志配置说明:@tpeczek:JSON来自服务器的响应将
行作为根。因此,在服务器端解决500错误问题后,需要将
jsonReader的
root
定义更改为
root:“行”