jqgrid自定义JSON数据没有错误但没有显示数据

时间:2016-04-14 09:41:44

标签: javascript php jquery json jqgrid

我一直在使用jqGrid一段时间,我只是想创建一个新的服务器端脚本来将数据返回到客户端网格。很多时候,我试图回到这些软件程序的基础知识。我想将JSON数据返回到我的网格,只需加载一次没有寻呼机。在引用文档here之后,我尝试创建我的JSON字符串以匹配文档中的格式,如下所示:

{ 
  "total": "xxx", 
  "page": "yyy", 
  "records": "zzz",
  "rows" : [
    {"id" :"1", "cell" :["cell11", "cell12", "cell13"]},
    {"id" :"2", "cell":["cell21", "cell22", "cell23"]},
      ...
  ]
}

这是JS网格定义:

$("#jqGrid").jqGrid({
    url:'/dataurl.php',
    shrinkToFit: true,
    autowidth: true,
    datatype: 'json',
    mtype: 'POST',
    postData:{
        'arg1':'load_data',
        'num_days':$('#num_of_days_input').val()
    },
    colNames:[
        'Ship_Date',
        'Insert/Label',
        'Customer',
        'JobNum',
        'QNTYOrdered',
        'DEL',
        'Ship_Type',
        'Carrier',
        'Time',
        'Status'
    ],
    colModel:[
        {width:20,name:'Ship_Date', index:'Ship_Date'},
        {width:20,name:'InsertorLabel', index:'InsertorLabel'},
        {width:20,name:'Customer', index:'Customer'},
        {width:20,name:'JobNum', index:'JobNum'},
        {width:20,name:'QNTYOrdered', index:'QNTYOrdered'},
        {width:20,name:'DEL', index:'DEL'},
        {width:20,name:'Ship_Type', index:'Ship_Type', edittype:'select', editoptions:{value:"Partial:Partial;Balance:Balance;Full:Full"}},
        {width:20,name:'Carrier', index:'Carrier', edittype:'select', editoptions:{value:"UPS:UPS;Fed Ex:Fed Ex;2D:2D;T&M:T&M;Cougar:Cougar"}},
        {width:20,name:'Time', index:'Time', edittype:'select', editoptions:{value:"before 7am:before 7am;7-9am:7-9am;9-12am:9-12am;12-3pm:12-3pm;after 3pm:after 3pm"}},
        {width:20,name:'Status', index:'Status', edittype:'select', editoptions:{value:"To Ship:To Ship;Ship Pending:Ship Pending"}}
    ],
    loadonce: true,
    sortname: 'Ship_Date',
    sortorder: 'asc',
    viewrecords: true,
    gridview: true,
    caption: 'Shipping Request',
    loadError: function(xhr, status, error){
        alert(xhr.responseText);
        alert(status);
        alert(error);
    },
    loadComplete: function(data){
        alert(JSON.stringify(data, null, 4));
    }
});

我使用loadError方法进行了相当多的调试,现在我没有收到错误,我可以看到从服务器返回的数据。对我来说,看起来格式是正确的:

enter image description here

但是,唉,网格在那里仍然显得空洞。我还缺少什么吗?谢谢!

1 个答案:

答案 0 :(得分:1)

来自服务器的JSON响应的rows属性的值必须是数组,但您使用的是对象(它应该是"rows": [{}],但是您使用{ {1}}而不是)。即使你只有一个项目,你仍然应该使用其中一个项目返回数组。