Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery jsonReader和jqgrid未将json填充到网格中_Jquery_Ajax_Json_Jqgrid_Jsonreader - Fatal编程技术网

Jquery jsonReader和jqgrid未将json填充到网格中

Jquery jsonReader和jqgrid未将json填充到网格中,jquery,ajax,json,jqgrid,jsonreader,Jquery,Ajax,Json,Jqgrid,Jsonreader,我有下面的json,我正试图将它显示在我的jqgrid上。我有以下jsonReader jsonReader : { repeatitems: false, root: "abc", page: function (obj) { return 1; }, total: function (obj) { return 1; }, records: function (obj) {

我有下面的json,我正试图将它显示在我的jqgrid上。我有以下jsonReader

jsonReader : {
            repeatitems: false,
            root: "abc",
            page: function (obj) { return 1; },
            total: function (obj) { return 1; },
            records: function (obj) { return obj.length; }
        },
柱模型:

Json:

只有num、seq和status填充了数据,但没有transTime、sd、total和xys

有什么想法和指针吗?

如果您必须读取JSON数据,并且无法在服务器端更改数据,则可以在处理回调之前在客户端对服务器返回的数据进行小的转换。执行此操作并显示以下结果

它使用以下代码

loadonce: true,
jsonReader: { root: "abc" },
beforeProcessing: function (data) {
    var root = data.abc, i, item, cItems = root.length;
    for (i = 0; i < cItems; i++) {
        item = root[i];
        item.sd = data.sd;
        item.id = $.jgrid.randId();
        item.total = data.total;
        item.xys = data.xys;
        if (item.transTime === null) {
            item.transTime = "null";
        }
    }
}

sd、total和xys不是abc数组的属性。您希望如何在网格中显示项目?是否在相应列的每一行中重复?transTime为空,不会显示为空字符串,就像显示为空字符串一样。谢谢Oleg!我想在JSON中显示返回的所有数据。我想在网格上显示xys、sd、total和abc数组。我知道time和transTime是空的,所以它们不会显示。我希望能够显示xys、sd和总计以及abc阵列最简单的方法是将sd、总计和xys属性作为abc项目的属性。您还可以将transTime:null更改为transTime:null。您可以在服务器端执行此操作吗?如果没有,则可以在beforeProcessing回调中的客户端上更改输入数据。如果您在实现上有问题,我可以向您展示如何做到这一点。谢谢Oleg!你能告诉我怎么做吗?服务器返回的JSON已修复,我无法进行更改。Oleg,我收到以下错误:Uncaught TypeError:无法读取未定义jquery.jqGrid.min.js的属性“id”:66@user3420947:您使用哪个版本的jqGrid?I包括item.id=$.jgrid.randId;行,但不是必需的。如果有错误,请始终使用jquery.jqGrid.src.js而不是jquery.jqGrid.min.js,并在jqGrid的src版本中发布行号。我使用jquery.jqGrid.min.js版本4.2.0。我改为jquery.jqGrid.src.js,但仍然得到未捕获的TypeError:无法读取未定义的jquery.jqGrid.src.js的属性“id”:1281@user3420947:我想您没有使用item.id=$.jgrid.randId;在处理前输入行。我不建议您使用这么旧的jqGrid版本。2011年出版。无论如何,jqGrid 4.2.0也可以使用。如果您的数据仍然存在相同的错误,那么可以在jsonReader中包含cell:false属性。
{
    "xys": 3,
    "abc": [
        {
            "time": null,
            "num": "1234",
            "seq": 2,
            "status": "X",
            "transTime": null
        },
        {
            "time": null,
            "num": "4567",
            "seq": 1,
            "status": "Y",
            "transTime": null
        }
    ],
    "sd": "7895",
    "total": 5
}
loadonce: true,
jsonReader: { root: "abc" },
beforeProcessing: function (data) {
    var root = data.abc, i, item, cItems = root.length;
    for (i = 0; i < cItems; i++) {
        item = root[i];
        item.sd = data.sd;
        item.id = $.jgrid.randId();
        item.total = data.total;
        item.xys = data.xys;
        if (item.transTime === null) {
            item.transTime = "null";
        }
    }
}