代码之家  ›  专栏  ›  技术社区  ›  meepmeep

jqgrid,JSON输入呈现为空

  •  1
  • meepmeep  · 技术社区  · 16 年前

    我试图生成一个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 回复  |  直到 16 年前
        1
  •  1
  •   Justin Ethier    16 年前

    根据 jqGrid Documentation ,默认情况下,网格需要以下格式的JSON数据:

    
    { 
      total: "xxx", 
      page: "yyy", 
      records: "zzz",
      rows : [
        {id:"1", cell:["cell11", "cell12", "cell13"]},
        {id:"2", cell:["cell21", "cell22", "cell23"]},
          ...
      ]
    }
    
    

    此外,使您的总/页/记录部分无序可能会导致问题-如果您在添加ID之后仍然有问题,那么这将是下一步要考虑的问题。

        2
  •  0
  •   meepmeep    16 年前

    解决了-我把html页面放在django应用程序中,这样jqgrid的url就变成了 url:'/json_test/' 然后就成功了。一定是jqgrid中只允许本地URL的代码?

        3
  •  0
  •   user330606 user330606    15 年前

    试试这个。。。

    loadError:函数(xhr,status,error){警报(status+“”+error);}