我正在尝试生成一个jqgrid,它从JSON提要填充,从django后端输出。
处理请求的python如下:
from django.http import HttpResponse
from django.utils import simplejson
def json_test(request):
results = {'total':'1',
'page':'1',
'records':'2',
'rows':[{'id':'1','field1':'blah','field2':'bleh'},
{'id':'2','field1':'bloo','field2':'blum'}]}
json = simplejson.dumps(results)
return HttpResponse(json, mimetype='application/json')
所以转到http://127.0.0.1:8000/json_test/
会返回以下内容:
{"records": "2", "total": "1", "rows": [{"field2": "bleh", "field1": "blah", "id": "1"}, {"field2": "blum", "field1": "bloo", "id": "2"}], "page": "1"}
jquery代码如下:
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#list").jqGrid({
url:'http://127.0.0.1:8000/json_test/',
datatype: 'json',
mtype: 'GET',
colNames:['field1','field2'],
colModel :[
{name:'field1', width:55},
{name:'field2', width:90},
],
pager: '#pager',
rowNum:10,
rowList:[10,20],
sortname: 'field1',
sortorder: 'desc',
viewrecords: true,
caption: 'Test Grid'
});
});
</script>
在加载页面时,网格呈现正确,并且它会短暂显示“加载数据”,但它不会显示任何行。
我出错的任何想法?我试图将这个问题尽可能简单地解决,以确定原因。
答案 0 :(得分:1)
根据jqGrid Documentation,默认情况下,网格需要采用以下格式的JSON数据:
{
total: "xxx",
page: "yyy",
records: "zzz",
rows : [
{id:"1", cell:["cell11", "cell12", "cell13"]},
{id:"2", cell:["cell21", "cell22", "cell23"]},
...
]
}
所以基本上看起来你需要为每个列设置一个ID。如果这不可行,则需要指定自己的jsonReader。
此外,让您的总/页/记录部分无序可能会导致问题 - 如果您在添加ID之后仍然遇到问题,那么这将是下一步要查看的内容。
答案 1 :(得分:0)
已解决 - 我将html页面放在django应用程序中,以便jqgrid网址变为url:'/json_test/'
,然后就可以了。必须是一个被编码到jqgrid中的东西,它只允许本地网址吗?
答案 2 :(得分:0)
试试这个......
loadError:function(xhr,status,error){alert(status +“”+ error);}