jqgrid с вводом JSON, пустой - PullRequest
1 голос
/ 09 марта 2010

Я пытаюсь сгенерировать 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 ]

1 голос
/ 09 марта 2010

Согласно документации jqGrid , по умолчанию сетка ожидает данные JSON в следующем формате:


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

Таким образом, похоже, вам нужно установить идентификатор для каждого из ваших столбцов. Если это невозможно, вам нужно указать свой собственный jsonReader.

Кроме того, из-за того, что ваши общие / page / records разделы вышли из строя, могут возникнуть проблемы - если у вас все еще есть проблемы после добавления идентификаторов, это будет следующий вопрос, на который стоит обратить внимание.

0 голосов
/ 10 ноября 2010

попробуйте это ...

loadError: function (xhr, status, error) {alert (status + "" + error);}

0 голосов
/ 10 марта 2010

Решено - я поместил html-страницу в приложение django, чтобы URL-адрес jqgrid стал url:'/json_test/', и тогда он заработал. Должно ли быть что-то скрытое в jqgrid, которое разрешает только локальные URL-адреса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...