Ответ 1
Я получил его для работы!
Поле dataType должно быть тип данных. Он чувствителен к регистру.
Я пытаюсь создать 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-код поможет, я тоже могу опубликовать его.
Я получил его для работы!
Поле dataType должно быть тип данных. Он чувствителен к регистру.
Проблема также возникает, когда вы включаете script 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/
Invalid
{
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 UI (включая закругленные углы!) (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-ридер в script.
Я исправил проблему, создав пустой объект:
$responce = new stdClass();
Я не думаю, что ваш идентификатор является правильным типом, я думаю, что это должен быть 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, можно решить все, и теперь моя сетка работает отлично!!!
Спасибо моим друзьям.