Вопрос

Я пытаюсь создать 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 должно быть типом данных . Это чувствительно к регистру.

Другие советы

Эта проблема также возникает, когда вы включаете скрипт 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 позволяет вам делать здесь все, что вы хотите, через событие)

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

С

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

Ваш 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"] }
]};

//Отметить ниже важной строки.тип данных «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;

Что здесь не так: я обращаюсь к странице свойств объекта $ responsece , не создавая его в первую очередь. Это заставило 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, een, которые я пробовал в Windows XP, и множество опций jqGrid. Ну, спасибо, наконец, Олегу и Мариушу я нахожу единственную строчку:

$responce = new stdClass(); 

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top