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

这两天研究jqgrid,我用的jsp,用local方式能正常显示出来,但换成json形式就不行了
[code="java"]
<%@ page pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



jqGrid Demos


[/code]
把mydate改成从后台获取也可以
[code="java"]var mydata = ${list};[/code]
list
[code="java"]
public 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());
}
[/code]
但是把datatype换成json就不行,返回的json格式数据我试了各种版本,但就是不行。
不知有人碰到过类似问题没有

这个可能的问题是你即时写了返回类型是json格式,但是jQGrid插件本身并未根据返回的类型Type来做处理,也即使把你返回的json格式的数据格式做json方式处理。
不过可以有个折中的方法来做,就是把你从服务器端返回的数据(json格式)使用eval,json=eval(json);这样子,使服务器返回的数据流转换成Json(Object),而不是Json(String),然后把你转换成的Json(Object)传入你的jQGrid,应该就可以了

用FF添加监控,看看到底是什么格式。

JSP跟JQGRID两码事....

我承认我的意思就是3楼说的,好吧我没说详细。所以让你看看你的数据到底是个啥,我以前有返回过,字符串格式的,还是自己写个方法来解析。

我也碰到相同的问题,正在解决之中。

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.html
jquery从1.4开始,对json数据格式要求很严格,不允许使用''单引号,必须使用""双引号。

也就是说,不能不引起来,必须用双引号引起来。

我也遇见这个问题了,偶尔在一个贴子上看到juqery1.4以后对单引号比较敏感,建议都改成双引号。。
colNames:["id","名称"],
colModel:[
{name:"id", width:55,index:"id",label:"id", sortable:false},
{name:"supplierName",label:"名称", width:120}
],

把colNames和colModel里的单引号改成双引号就正常显示了