Загрузка данных JSON в jqGrid - PullRequest
1 голос
/ 27 марта 2012

У меня проблемы с отображением данных json в jqGrid.

Я много искал на этом форуме и пробовал разные формы, чтобы он работал. Я прошу прощения, если на это уже ответили, но мне действительно нужна помощь с этим.

На странице сервера я использовал только JavaScriptSerializer для отправки данных и функцию jsonreader с параметрами по умолчанию (это работало нормально).

Теперь мне нужно выполнить разбивку на страницы и изменить код страницы сервера для работы с sidx , sord , page , строк параметры.

Результирующая строка с сервера выглядит так:

{"total":"344","page":"1","records":"8577","root":[{"Id":"1","SerialNumber":"132","Name":"ServerName"},...]}

Вот мой код jQuery:

$("#list").jqGrid({
        datatype: "json",
        mtype: 'GET',
        url:'https://server/handlerpage.ashx',
        colNames:['Id','SerialNumber','Name'],
        colModel :[         
                {name:'Id', index:'Id', jsonmap:"Id", width:20},
                {name:'Name', index:'Name', jsonmap:"Name", width:120},
                {name:'SerialNumber', index:'SerialNumber', jsonmap:"SerialNumber", width:100}],    
        jsonreader: {repeatitems:false,id:'Id',root:'root'},
        pager: '#pager',
        rowNum:25,
        rowList:[25,50,75,100],
        sortname: 'Id',
        viewrecords:true,
        gridview: true,
        height:"400",
        width:"700",
        caption: 'Select from existing server',
        loadtext:'Loading, please wait'
      }).navGrid("#pager", { edit: false, add: false, search: true, del: false });

Ответы [ 3 ]

3 голосов
/ 13 марта 2013

Чтобы использовать данные json в качестве ответа на запрос, ответ должен быть правильно отформатирован.Трудно определить, что является правильным ответом и как получить его из документов.Больше проблем может возникнуть в результате настроек вашего сервера, генерирующих предупреждение как часть ответа, что приведет к тому, что сетка не будет загружаться.

Из документов это json reader по умолчанию, что означает, что если вы правильно отформатируете свой ответ, вам не нужно ничего добавлять / настраивать json reader.

jsonReader : { 
  root: "rows", 
  page: "page", 
  total: "total", 
  records: "records", 
  repeatitems: true, 
  cell: "cell", 
  id: "id",
  userdata: "userdata",
  subgrid: { 
     root:"rows", 
     repeatitems: true, 
     cell:"cell" 
  } 

Сначала убедитесь, что у вас правильный формат ответа.{"page":1,"total":1,"records":"2","rows":[{"id":"1","cell":["1","mydata1"]},{"id":"2","cell":["2","mydata2"]}]}

На странице документов не приводится образец, но приведенное выше верно, если в вашей сетке только два столбца.Вам нужно получить запрос к вашему серверу / разбор вашего запроса к серверу и значений, передаваемых на страницу, где выполняются ваши серверные сценарии, чтобы вернуть этот формат.Страница example.php из документов дает вам все необходимые значения.

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

header('Content-type: application/json');$responce = new stdClass();$responce->page = $page;$responce->total = $total_pages;$responce->records = $count;$i=0;while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {$responce->rows[$i]['id']=$row['ID'];$responce->rows[$i]['cell']=array($row['ID'],$row['entity_name']); $i++; } echo json_encode($responce);

Чтобы перефразировать то, что отсутствует в документах (возможно, я просто пропустил их, и даже если документы для jQgrid являются эпической / магистерской работой): 1. Нет упоминания о необходимостиоператор заголовка для json (это ясно с примерами XML) 2. Нет примера того, как должна выглядеть рабочая возвращенная строка. 3. Отсутствие надлежащего форматирования индексов ассоциативного массива.4. Нет упоминания о том, как избежать возврата PHP-предупреждения как части ответа

1 голос
/ 27 марта 2012

Попробуйте следующее

jsonReader: {
    root: 'rows',
    page: 'page',
    total: 'total',
    records: 'records',
    repeatitems: true,
    cell: 'cell',
    id: 'id',
    userdata: 'userdata'
}
0 голосов
/ 27 марта 2012

Пожалуйста, убедитесь, что серверный скрипт возвращает правильную строку json с HEADERS

Далее проверьте сайт demo и пример JSON

...