在jqGrid中加载JSON数据

在jqGrid中加载JSON数据,jqgrid,jsonreader,Jqgrid,Jsonreader,在jqGrid中显示json数据时遇到问题 我在这个论坛上搜索了很多内容,并尝试了各种形式使其发挥作用。如果已经回答了,我很抱歉,但是我真的需要帮助 在服务器页面上,我只使用JavaScriptSerializer发送数据,并使用带有默认参数的jsonreader函数(这工作正常) 现在我需要分页并更改服务器页面代码,以使用sidx、sord、页面、行参数 服务器生成的字符串如下所示: {"total":"344","page":"1","records":"8577","root":[{"Id

在jqGrid中显示json数据时遇到问题

我在这个论坛上搜索了很多内容,并尝试了各种形式使其发挥作用。如果已经回答了,我很抱歉,但是我真的需要帮助

在服务器页面上,我只使用JavaScriptSerializer发送数据,并使用带有默认参数的jsonreader函数(这工作正常)

现在我需要分页并更改服务器页面代码,以使用sidxsord页面参数

服务器生成的字符串如下所示:

{"total":"344","page":"1","records":"8577","root":[{"Id":"1","SerialNumber":"132","Name":"ServerName"},...]}
以下是我的jQuery代码:

$("#list").jqGrid({
        datatype: "json",
        mtype: 'GET',
        url:'https://server/handlerpage.ashx',
        colNames:['Id','SerialNumber','Name'],
        colModel :[         
                {name:'Id', index:'Id', jsonmap:"Id", width:20},
                {name:'Name', index:'Name', jsonmap:"Name", width:120},
                {name:'SerialNumber', index:'SerialNumber', jsonmap:"SerialNumber", width:100}],    
        jsonreader: {repeatitems:false,id:'Id',root:'root'},
        pager: '#pager',
        rowNum:25,
        rowList:[25,50,75,100],
        sortname: 'Id',
        viewrecords:true,
        gridview: true,
        height:"400",
        width:"700",
        caption: 'Select from existing server',
        loadtext:'Loading, please wait'
      }).navGrid("#pager", { edit: false, add: false, search: true, del: false });

请确保服务器端脚本返回正确的json字符串


进一步检查站点和JSON示例

请确保服务器端脚本返回正确的JSON字符串

进一步检查站点和JSON示例

尝试以下操作

jsonReader: {
    root: 'rows',
    page: 'page',
    total: 'total',
    records: 'records',
    repeatitems: true,
    cell: 'cell',
    id: 'id',
    userdata: 'userdata'
}
试试下面的方法

jsonReader: {
    root: 'rows',
    page: 'page',
    total: 'total',
    records: 'records',
    repeatitems: true,
    cell: 'cell',
    id: 'id',
    userdata: 'userdata'
}

为了使用json数据作为查询的响应,必须正确格式化响应。很难确定什么是正确的响应以及如何从文档中获取。如果服务器设置在响应中生成警告,将导致网格无法加载,则可能会出现更多问题

从文档中可以看出,这是默认的json读取器,这意味着如果您正确格式化了响应,则无需添加任何内容/自定义json读取器

jsonReader : { 
  root: "rows", 
  page: "page", 
  total: "total", 
  records: "records", 
  repeatitems: true, 
  cell: "cell", 
  id: "id",
  userdata: "userdata",
  subgrid: { 
     root:"rows", 
     repeatitems: true, 
     cell:"cell" 
  } 
首先确保您有正确的响应格式<代码>{“页面”:1,“总计”:1,“记录”:“2”,“行”:[{“id”:“1”,“单元格”:[“1”,“mydata1”]},{“id”:“2”,“单元格”:[“2”,“mydata2”]}}

“文档”页面上没有给出示例,但如果网格中只有两列,则上述示例是正确的。您需要获取服务器查询/解析服务器查询以及传递到运行服务器端脚本的页面的值,以返回此格式。文档中的example.php页面提供了所需的所有值

此代码将为您提供正确的标题,以避免错误警告,并与上面的响应匹配。还请注意,在文档中,它们不会在关联数组索引名的索引周围添加撇号。这将失败

header('Content-type: application/json');$responce = new stdClass();$responce->page = $page;$responce->total = $total_pages;$responce->records = $count;$i=0;while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {$responce->rows[$i]['id']=$row['ID'];$responce->rows[$i]['cell']=array($row['ID'],$row['entity_name']); $i++; } echo json_encode($responce);
要重述文档中缺失的内容(我可能只是遗漏了它们,即使jQgrid的文档是epic/a大师级作品): 1.没有提到需要json的头语句(XML示例很清楚) 2.没有工作返回字符串的示例 3.关联数组索引的格式不正确。
4.没有提到如何避免PHP警告作为响应的一部分返回

为了使用json数据作为查询的响应,响应必须正确格式化。很难确定什么是正确的响应以及如何从文档中获取。如果服务器设置在响应中生成警告,将导致网格无法加载,则可能会出现更多问题

从文档中可以看出,这是默认的json读取器,这意味着如果您正确格式化了响应,则无需添加任何内容/自定义json读取器

jsonReader : { 
  root: "rows", 
  page: "page", 
  total: "total", 
  records: "records", 
  repeatitems: true, 
  cell: "cell", 
  id: "id",
  userdata: "userdata",
  subgrid: { 
     root:"rows", 
     repeatitems: true, 
     cell:"cell" 
  } 
首先确保您有正确的响应格式<代码>{“页面”:1,“总计”:1,“记录”:“2”,“行”:[{“id”:“1”,“单元格”:[“1”,“mydata1”]},{“id”:“2”,“单元格”:[“2”,“mydata2”]}}

“文档”页面上没有给出示例,但如果网格中只有两列,则上述示例是正确的。您需要获取服务器查询/解析服务器查询以及传递到运行服务器端脚本的页面的值,以返回此格式。文档中的example.php页面提供了所需的所有值

此代码将为您提供正确的标题,以避免错误警告,并与上面的响应匹配。还请注意,在文档中,它们不会在关联数组索引名的索引周围添加撇号。这将失败

header('Content-type: application/json');$responce = new stdClass();$responce->page = $page;$responce->total = $total_pages;$responce->records = $count;$i=0;while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {$responce->rows[$i]['id']=$row['ID'];$responce->rows[$i]['cell']=array($row['ID'],$row['entity_name']); $i++; } echo json_encode($responce);
要重述文档中缺失的内容(我可能只是遗漏了它们,即使jQgrid的文档是epic/a大师级作品): 1.没有提到需要json的头语句(XML示例很清楚) 2.没有工作返回字符串的示例 3.关联数组索引的格式不正确。
4.没有提到如何避免PHP警告作为响应的一部分返回

我尝试了application/json和text/json,但没有解决我的问题。我还尝试了text/plain(在分页之前第一次工作),但也不起作用。有趣的是,分页栏工作得很好,我可以看到页面的数量并对其进行更改,就像网格不想读取服务器响应的根部分一样。我使用了:text/plain、text/json、application/json,它们在更改jsronReader后都工作了。谢谢。我尝试了application/json和text/json,但没有解决我的问题。我还尝试了text/plain(在分页之前第一次工作),但也不起作用。有趣的是,分页栏工作得很好,我可以看到页面的数量并对其进行更改,就像网格不想读取服务器响应的根部分一样。我使用了:text/plain、text/json、application/json,它们在更改jsronReader后都工作了。谢谢,那也不行。我想知道'root':[{…}]是否是错误的,当我在jsonReader中更改根标记'rows'或其他值时,网格显示加载字符串并保持在那里。我稍微更改了一下,它起了作用:jsonReader:{root:'rows',page:'page',total:'total',records:'records',repeatitems:false,id:'id'}谢谢两个同样不起作用的种子。我想知道'root':[{…}]是否错误,当我在jsonReader中更改根标记'rows'或其他值时,网格显示加载字符串