jqGrid с данными JSON отображает таблицу как пустую

Я пытаюсь создать jqgrid, но таблица пуста. Таблица отображает, но данные не отображаются.

Данные, которые я получаю от вызова php:

{ "page":"1", "total":1, "records":"10", "rows":[ {"id":"2:1","cell":["1","image","Chief Scout","Highest Award test","0"]}, {"id":"2:2","cell":["2","image","Link Badge","When you are invested as a Scout, you may be eligible to receive a Link Badge. (See page 45)","0"]}, {"id":"2:3","cell":["3","image","Pioneer Scout","Upon completion of requirements, the youth is invested as a Pioneer Scout","0"]}, {"id":"2:4","cell":["4","image","Voyageur Scout Award","Voyageur Scout Award is the right after Pioneer Scout.","0"]}, {"id":"2:5","cell":["5","image","Voyageur Citizenship","Learning about and caring for your community.","0"]}, {"id":"2:6","cell":["6","image","Fish and Wildlife","Demonstrate your knowledge and involvement in fish and wildlife management.","0"]}, {"id":"2:7","cell":["7","image","Photography","To recognize photography knowledge and skills","0"]}, {"id":"2:8","cell":["8","image","Recycling","Demonstrate your knowledge and involvement in Recycling","0"]}, {"id":"2:10","cell":["10","image","Voyageur Leadership ","Show leadership ability","0"]}, {"id":"2:11","cell":["11","image","World Conservation","World Conservation Badge","0"]} ]} 

Конфигурация javascript выглядит так:

 $("#"+tableId).jqGrid ({ url:'getAwards.php?id='+classId, dataType : 'json', mtype:'POST', colNames:['Id','Badge','Name','Description',''], colModel : [ {name:'awardId', width:30, sortable:true, align:'center'}, {name:'badge', width:40, sortable:false, align:'center'}, {name:'name', width:180, sortable:true, align:'left'}, {name:'description', width:380, sortable:true, align:'left'}, {name:'selected', width:0, sortable:false, align:'center'} ], sortname: "awardId", sortorder: "asc", pager: $('#'+tableId+'_pager'), rowNum:15, rowList:[15,30,50], caption: 'Awards', viewrecords:true, imgpath: 'scripts/jqGrid/themes/green/images', jsonReader : { root: "rows", page: "page", total: "total", records: "records", repeatitems: true, cell: "cell", id: "id", userdata: "userdata", subgrid: {root:"rows", repeatitems: true, cell:"cell" } }, width: 700, height: 200 }); 

HTML выглядит так:

 <table class="awardsList" id="awardsList2" class="scroll" name="awardsList" /> <div id="awardsList2_pager" class="scroll"></div> 

Я не уверен, что мне нужно было определить jsonReader, так как я пытался сохранить значение по умолчанию. Если PHP-код поможет, я могу опубликовать его тоже.

Solutions Collecting From Web of "jqGrid с данными JSON отображает таблицу как пустую"

Я заработал!

Поле dataType должно быть типом данных . Это чувствительный к регистру.

Проблема также возникает, когда вы включаете скрипт jquery.jqGrid.min.js до этого grid.locale-en.js . Проверьте это, если есть какие-либо проблемы с вызовом метода контроллера.

Я столкнулся с такой же проблемой при переходе с jqGrid 3.6 на jqGrid 3.7.2. Проблема заключалась в том, что мой JSON не был должным образом двойным кавычками (как того требует спецификация JSON). jqGrid 3.6 переносил мой недействительный JSON, но jqGrid 3.7 более строгий.

См. Здесь: http://simonwillison.net/2006/Oct/11/json/

Недействительно :

 { page:"1", total:1, records:"10", rows:[ {"id":"2:1","cell":["1","image","Chief Scout","Highest Award test","0"]}, {"id":"2:2","cell":["2","image","Link Badge","When you are invested as a Scout, you may be eligible to receive a Link Badge. (See page 45)","0"]}, {"id":"2:3","cell":["3","image","Pioneer Scout","Upon completion of requirements, the youth is invested as a Pioneer Scout","0"]} ]} 

Действительно :

 { "page":"1", "total":1, "records":"10", "rows":[ {"id":"2:1","cell":["1","image","Chief Scout","Highest Award test","0"]}, {"id":"2:2","cell":["2","image","Link Badge","When you are invested as a Scout, you may be eligible to receive a Link Badge. (See page 45)","0"]}, {"id":"2:3","cell":["3","image","Pioneer Scout","Upon completion of requirements, the youth is invested as a Pioneer Scout","0"]} ]} 

Я также получил его на работу: тип данных – правильное написание – это показано в этом примере, но оно несовместимо со всем остальным в библиотеке, поэтому было легко ошибиться

Я очень устаю преследовать эту разреженную документацию, и мне действительно кажется, что JSON, который правилен и правилен для использования в JavaScript, действительно получил короткое освещение в пользу XML. Python и JavaScript вместе, через JSON, – действительно сильная комбинация, но это постоянная борьба с этой конкретной библиотекой.

Любой, у кого есть альтернатива, которая:

1> Правильно поддерживает jQuery темы пользовательского интерфейса (включая закругленные углы!) ( http://datatables.net имеет гораздо лучшую поддержку тем)

2> Позволяет изменять размер столбцов ( http://datatables.net не поддерживает это из коробки)

3> Разрешает суб-сетки ( http://datatables.net позволяет делать то, что вы хотите здесь, через событие)

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

S

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

Ваш JSON должен быть в таком формате:

 { "rows": [ { "id": 1, "cell": [ 1, "lname", "fname", "mi", phone, "cell1", "cell2", "address", "email" ] }, { "id": 2, "cell": [ 2, "lname", "fname", "mi", phone, "cell1", "cell2", "address", "email" ] } ] 

}

и я написал эту модель в Zend, чтобы вы могли ее использовать, если вам так хочется. Манипулируйте им, как хотите.

 public function fetchall ($sid, $sord) { $select = $this->getDbTable()->select(Zend_Db_Table::SELECT_WITH_FROM_PART); $select->setIntegrityCheck(false) ->join('Subdiv', 'Subdiv.SID = Contacts.SID', array("RepLastName" => "LastName", "Subdivision" => "Subdivision", "RepFirstName" => "FirstName")) ->order($sid . " ". $sord); $resultset = $this->getDbTable()->fetchAll($select); $i=0; foreach ($resultset as $row) { $entry = new Application_Model_Contacts(); $entry->setId($row->id); $entry->setLastName($row->LastName); $entry->setFirstName1($row->FirstName1); $entry->setFirstName2($row->FirstName2); $entry->setHomePhone($row->HomePhone); $entry->setCell1($row->Cell1); $entry->setCell2($row->Cell2); $entry->setAddress($row->Address); $entry->setSubdivision($row->Subdivision); $entry->setRepName($row->RepFirstName . " " . $row->RepLastName); $entry->setEmail1($row->Email1); $entry->setEmail2($row->Email2); $response['rows'][$i]['id'] = $entry->getId(); //id $response['rows'][$i]['cell'] = array ( $entry->getId(), $entry->getLastName(), $entry->getFirstName1(), $entry->getFirstName2(), $entry->getHomePhone(), $entry->getCell1(), $entry->getCell2(), $entry->getAddress(), $entry->getSubdivision(), $entry->getRepName(), $entry->getEmail1(), $entry->getEmail2() ); $i++; } return $response; } 

Ребята просто хотят помочь вам в этом. Я получил следующие работы:

JSON

 var mydata1 = { "page": "1", "total": 1, "records": "4","rows": [{ "id": 1, "cell": ["1", "cell11", "values1" ] }, { "id": 2, "cell": ["2", "cell21", "values1"] }, { "id": 3, "cell": ["3", "cell21", "values1"] }, { "id": 4, "cell": ["4", "cell21", "values1"] } ]}; 

// Отметка ниже важной строки. datatype «jsonstring» работал для меня вместо «json».

 datatype: "jsonstring", contentType: "application/json; charset=utf-8", datastr: mydata1, colNames: ['Id1', 'Name1', 'Values1'], colModel: [ { name: 'id1', index: 'id1', width: 55 }, { name: 'name1', index: 'name1', width: 80, align: 'right', sorttype: 'string' }, { name: 'values1', index: 'values1', width: 80, align: 'right', sorttype: 'string'}], 

С Уважением,

В моем случае проблема была вызвана следующей строкой кода PHP (которая была взята из демонстрации jqGrid):

 $responce->page = $page; 

Здесь не так: я обращаюсь к странице свойств объекта $responce не создавая его в первую очередь. Это заставило Apache отобразить следующее сообщение об ошибке:

 Strict Standards: Creating default object from empty value in /home/mariusz/public_html/rezerwacja/apps/frontend/modules/service/actions/actions.class.php on line 35 

И, наконец, сообщение об ошибке использовалось для отправки в json reader внутри скрипта.

Я исправил проблему, создав пустой объект:

 $responce = new stdClass(); 

Я не думаю, что ваш ID – правильный тип, я думаю, что это должен быть int.

Для данного json вам действительно не нужны настройки jsonreader. То, что вы указали, по умолчанию равно, плюс у вас нет подзаголовки в json.

Попробуй это:

 { "page":"1", "total":1, "records":"10", "rows":[ {"id":1 ,"cell":["1","image","Chief Scout","Highest Award test","0"]}, {"id":2,"cell":["2","image","Link Badge","When you are invested as a Scout, you maybe eligible to receive a Link Badge. (See page 45)","0"]}, {"id":3,"cell":["3","image","Pioneer Scout","Upon completion of requirements, the youth is invested as a Pioneer Scout","0"]}, {"id":4,"cell":["4","image","Voyageur Scout Award","Voyageur Scout Award is the right after Pioneer Scout.","0"]}, {"id":5,"cell":["5","image","Voyageur Citizenship","Learning about and caring for your community.","0"]}, {"id":6,"cell":["6","image","Fish and Wildlife","Demonstrate your knowledge and involvement in fish and wildlife management.","0"]}, {"id":7,"cell":["7","image","Photography","To recognize photography knowledge and skills","0"]}, {"id":8,"cell":["8","image","Recycling","Demonstrate your knowledge and involvement in Recycling","0"]}, {"id":9,"cell":["10","image","Voyageur Leadership ","Show leadership ability","0"]}, {"id":10,"cell":["11","image","World Conservation","World Conservation Badge","0"]} ]} 

Я работал с WAMP 2.4, я был сумасшедшим с этой проблемой, я пробовал много вещей, например, устанавливать предыдущие версии PHP и, как, например, 5.2, например, я пытался в Windows XP и множество опций jqGrid. Хорошо спасибо Олегу, наконец, и Мариушу, я нахожу единственную линию:

 $responce = new stdClass(); 

До того, как использование $ responce могло решить все, и теперь моя сетка работает отлично !!!

Спасибо, друзья.