jqgrid与JSON输入呈现为空

时间:2010-03-09 16:57:44

标签: django json jqgrid

我正在尝试生成一个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>

在加载页面时,网格呈现正确,并且它会短暂显示“加载数据”,但它不会显示任何行。

我出错的任何想法?我试图将这个问题尽可能简单地解决,以确定原因。

3 个答案:

答案 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);}