jqgrid用Java返回了json数据,却总是显示不出来

问题描述

这两天研究jqgrid,我用的jsp,用local方式能正常显示出来,但换成json形式就不行了<%@ page pageEncoding="UTF-8" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jqGrid Demos</title> <link rel="stylesheet" type="text/css" media="screen" href="<%=application.getContextPath()%>/resources/jqcss/jquery-ui-1.8.12.custom.css" /> <link rel="stylesheet" type="text/css" media="screen" href="<%=application.getContextPath()%>/resources/jqcss/ui.jqgrid.css" /> <link rel="stylesheet" type="text/css" media="screen" href="<%=application.getContextPath()%>/resources/jqcss/ui.multiselect.css" /> <script src="<%=application.getContextPath()%>/resources/js/jquery-1.4.2.min.js" type="text/javascript" ></script> <script src="<%=application.getContextPath()%>/resources/jqgrid/grid.locale-cn.js" type="text/javascript"></script> <script type="text/javascript"> $.jgrid.no_legacy_api = true; $.jgrid.useJSON = true; </script> <script src="<%=application.getContextPath()%>/resources/jqgrid/jquery.jqGrid.min.js" type="text/javascript"></script> <script src="<%=application.getContextPath()%>/resources/jqgrid/jquery-ui-1.8.12.custom.min.js" type="text/javascript"></script> <script type="text/javascript"> jQuery(document).ready(function(){ jQuery("#list4").jqGrid({ datatype: "local", height: 250, colNames:['序号','日期', '姓名', '数量A','数量B','总和','备注'], colModel:[ {name:'id',index:'id', width:30, sorttype:"int"}, {name:'invdate',index:'invdate', width:90, sorttype:"date"}, {name:'name',index:'name', width:100}, {name:'amount',index:'amount', width:80, align:"right",sorttype:"float"}, {name:'tax',index:'tax', width:80, align:"right",sorttype:"float"}, {name:'total',index:'total', width:80,align:"right",sorttype:"float"}, {name:'note',index:'note', width:150, sortable:false} ], rowNum:4, rowList:[4,8,12], pager: '#pager2', multiselect: true, caption: "Manipulating Array Data" }); var mydata = [ {id:"1",invdate:"2007-10-01",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, {id:"2",invdate:"2007-10-02",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, {id:"3",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}, {id:"4",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, {id:"5",invdate:"2007-10-05",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, {id:"6",invdate:"2007-09-06",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"}, {id:"7",invdate:"2007-10-04",name:"test",note:"note",amount:"200.00",tax:"10.00",total:"210.00"}, {id:"8",invdate:"2007-10-03",name:"test2",note:"note2",amount:"300.00",tax:"20.00",total:"320.00"}, {id:"9",invdate:"2007-09-01",name:"test3",note:"note3",amount:"400.00",tax:"30.00",total:"430.00"} ]; for(var i=0;i<=mydata.length;i++){ jQuery("#list4").jqGrid('addRowData',i+1,mydata[i]); } }); </script></head><body> <table id="list4"></table> <div id="pager2"></div></body>把mydate改成从后台获取也可以var mydata = ${list};listpublic void onLoad(Map request, Map session) { StringBuilder sb = new StringBuilder(); sb.append("[{id:").append('"').append("1").append('"') .append(",invdate:").append('"').append("2007-10-01").append('"') .append(",name:").append('"').append("test").append('"') .append(",note:").append('"').append("note").append('"') .append(",amount:").append('"').append("200.00").append('"') .append(",tax:").append('"').append("10.00").append('"') .append(",total:").append('"').append("210.00").append('"') .append("}]") ; request.put("list", sb.toString()); }但是把datatype换成json就不行,返回的json格式数据我试了各种版本,但就是不行。不知有人碰到过类似问题没有 问题补充:chengjiang_lin 写道

解决方案

这个可能的问题是你即时写了返回类型是json格式,但是jQGrid插件本身并未根据返回的类型Type来做处理,也即使把你返回的json格式的数据格式做json方式处理。不过可以有个折中的方法来做,就是把你从服务器端返回的数据(json格式)使用eval,json=eval(json);这样子,使服务器返回的数据流转换成Json(Object),而不是Json(String),然后把你转换成的Json(Object)传入你的jQGrid,应该就可以了
解决方案二:
http://www.trirand.com/blog/jqgrid/jqgrid.html看上面的例子,然后输入:http://www.trirand.com/blog/jqgrid/server.php?q=2&page=2&rows=20可以看返回的json的格式,原因就在于json各项和值需要用引号引起来。参考:http://www.cnblogs.com/oilsun/archive/2012/06/27/2565852.htmljquery从1.4开始,对json数据格式要求很严格,不允许使用''单引号,必须使用""双引号。也就是说,不能不引起来,必须用双引号引起来。
解决方案三:
我也碰到相同的问题,正在解决之中。
解决方案四:
我承认我的意思就是3楼说的,好吧我没说详细。所以让你看看你的数据到底是个啥,我以前有返回过,字符串格式的,还是自己写个方法来解析。
解决方案五:
JSP跟JQGRID两码事....
解决方案六:
用FF添加监控,看看到底是什么格式。

时间: 2024-09-20 00:16:31

jqgrid用Java返回了json数据,却总是显示不出来的相关文章

jqGrid获取到python返回的Json数据,未能显示到页面上,为毛???

问题描述 jqGrid获取到python返回的Json数据,未能显示到页面上,为毛???  写道 解决方案 上面的链接搞乱了,看这个:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data&s[]=json#json_data解决方案二:你的后台返回的相应数据格式不对啊,jqgrid有要求的:看=json#json_data]官方文档这里

java-bsgrid 如何局部刷新列表?获取Java返回的json格式的数据?

问题描述 bsgrid 如何局部刷新列表?获取Java返回的json格式的数据? java端SpringMVC 框架调用的方法如下: @ResponseBody @RequestMapping("/ajaxPage") public String ajaxPage(HttpServletRequest request){ String pageSize = request.getParameter("pageSize"); System.out.print(page

jquery序列化form表单使用ajax提交后处理返回的json数据

 这篇文章主要介绍了jquery序列化form表单,使用ajax提交后处理返回的json数据的示例,需要的朋友可以参考下 1.返回json字符串:    代码如下: /** 将一个字符串输出到浏览器 */     protected void writeJson(String json) {         PrintWriter pw = null;         try {             servletResponse.setContentType("text/plain;cha

显示-求教将后台返回的JSON数据填充到表格的问题,js的循环怎么写才正确。

问题描述 求教将后台返回的JSON数据填充到表格的问题,js的循环怎么写才正确. 后台返回的是这样的 {"reportId":"1","className":"java","reportName":"232","teaName":"刘老师","stuName":"张同学","uploadDate&q

ajax接受后台返回的json数据不全

问题描述 ajax接受后台返回的json数据不全 后面没东西了 导致ajax直接进入error方法了知道的大神帮忙支支招 , 万分感谢 解决方案 网络不稳定导致数据没有传输完吧...你浏览器直接访问地址能获取到完整的数据没? 解决方案二: 你先检查后台组织json的地方是否组织了正确的数据 解决方案三: 如果是你在后台自己封装的json对象,需要考虑容错,不要因为某一项异常或导致了返回的对象不是一个完整的Json对象.最好是先取值,最后统一封装,而不是动态拼接这种形式,极易出错. 解决方案四:

javascrpit-js怎样将返回的json数据读取到s:select中

问题描述 js怎样将返回的json数据读取到s:select中 json数据 [{""inherit"":6majorID"":7majorName"":""交通工程系""}{""inherit"":6majorID"":9majorName"":""交通运输工程研究所"&quo

springmvc 返回的json数据问题

问题描述 springmvc 返回的json数据问题 springmvc 返回的json数据是整个页面代码,如图: 解决方案 问题已解决是加了 sitemesh的原因,因为在请求这个url的时候sitemesh进行拦截了,解决的办法也很简单:只要把这个url在sitemesh拦截的时候去掉就可以了 解决方案二: 怎么这里没有人回答啊 解决方案三: 打个断点或者输出下日志,看一下是否进入这个controller的方法了 解决方案四: 你要返回json不能这么干,首先你返回json的action 应

上传文件返回的json数据会被提示下载问题解决方案_javascript技巧

最近项目中出现上传文件返回的json数据会被提示下载,只有在ie10+中才会出现这个问题.前端使用jQuery的插件ajaxForm提交表单,后台返回的数据格式为json.代码如下:  后端Python: 复制代码 代码如下: def jsonp(func):     """Wraps JSONified output for JSONP requests."""     @wraps(func)     def decorated_functi

淘宝API返回的json数据无法用json_decode的问题

如题,这个问题困扰我已久...经过自己的多次尝试,和到网上搜索,我已大概猜测到是字符的问题,论坛上的朋友说,PHP的json_decode对json数据要求非常严格,必须是{"key":"value"}的双引号包围才行,而且,对一些特殊符号不兼容...例如UTF-8的 BOM头,或者是C++字符的结束符等等... 经过排查,我发现...淘宝API返回的json数据(特别是taobao.taobaoke.items.detail.get),之所以json_decode