Frage

Ich versuche, eine jqGrid zu schaffen, aber die Tabelle ist leer. Die Tabelle macht, aber die Daten zeigen, nicht.

Die Daten Ich bin zurück aus dem PHP-Anruf bekommen sind:

{
"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"]}
]}

Die Javascript-Konfiguration sieht so aus:

$("#"+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
});

Die HTML wie folgt aussieht:

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

Ich bin nicht sicher, dass ich brauchte jsonReader zu definieren, da ich auf den Standardwert zu halten habe versucht. Wenn der PHP-Code helfen, ich kann es Post zu.

War es hilfreich?

Lösung

Ich habe es zu arbeiten!

Die datatype sollte seinen Datentyp . Es ist Groß- und Kleinschreibung.

Andere Tipps

Das Problem auch occures, wenn Sie Skript jquery.jqGrid.min.js bevor dann grid.locale-en.js enthalten. Prüfen Sie dies, wenn es irgendwelche Probleme mit der Steuerung des Methodenaufruf.

erlebte ich das gleiche Problem, wenn sie von jqGrid 3,6 bis jqGrid 3.7.2 migrieren. Das Problem war meine JSON nicht richtig in doppelten Anführungszeichen war (wie durch JSON-Spezifikation erforderlich). jqGrid 3.6 toleriert meine ungültige JSON aber jqGrid 3.7 ist strenger.

Siehe hier: http://simonwillison.net/2006/Oct/11/json /

Ungültige :

{
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"]}
]}

Valid :

{
"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"]}
]}

Ich habe es auch zu arbeiten: Datentyp ist die richtige Schreibweise - es ist auf diese Weise in dem Beispiel gezeigt, aber es ist nicht mit alles sonst in der Bibliothek, so dass es einfach war, falsch zu bekommen

Ich bin immer sehr müde diese spärliche Dokumentation jagen um, und ich fühle mich wie JSON wirklich, was gut und richtig ist in JavaScript zu verwenden, hat sich wirklich kurze Abdeckung für XML gegeben worden. Python und JavaScript zusammen, durch JSON, ist eine wirklich starke Kombination, aber es ist ein ständiger Kampf mit dieser bestimmten Bibliothek.

Jeder, der eine Alternative, die:

1> unterstützt richtig jQuery UI Themen (einschließlich abgerundeten Ecken!) ( http://datatables.net hat viel schönere Unterstützung für Themen)

2> Ermöglicht Änderung der Größe von Spalten ( http://datatables.net bedeutet dies nicht aus der Box unterstützt )

3> Ermöglicht Untergitter ( http://datatables.net können Sie tun, was Sie wollen hier durch ein Ereignis)

Bitte lassen Sie mich wissen. Ich verbringe mehr Zeit auf diesem einem Teil meiner Schnittstelle als auf dem ganzen Rest davon kombiniert und es ist die ganze Zeit für abgebrannte Suche Beispiele zu arbeiten und „versuchen, die Dinge“, die gerade ist immer ärgerlich.

S

Dies könnte ein älterer Beitrag, aber ich werde meinen Erfolg Post nur um andere zu helfen.

Ihre JSON muss in diesem Format angegeben werden:

{
"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"
        ]
    }
]

}

und ich schrieb dieses Modell in Zend, damit Sie es verwenden können, wenn Sie Lust haben. Manipulieren Sie es, wie Sie wollen.

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;
}

Jungs wollen nur Sie in diesem helfen. Ich habe folgendes gearbeitet:

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

// Mark unten wichtige Linie. Datentyp "jsonstring" funktionierte für mich statt "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'}],

Grüße,

In meinem Fall ist das Problem durch die folgende Zeile PHP-Code verursacht wurde (die von jqGrid Demo genommen wurde):

$responce->page = $page;

falsch, was hier ist, dass: Ich bin Zugriff auf Immobilienseite des Objekts $responce ohne es zunächst zu schaffen. Dies verursachte Apache wird folgende Fehlermeldung angezeigt werden:

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

Und schließlich die Fehlermeldung verwendet, um innerhalb des Skripts zu json Lesern gesendet.

Ich reparierte das Problem durch leeres Objekt zu erstellen:

$responce = new stdClass();

Ich glaube nicht, Ihre ID ist der richtige Typ, ich denke, es sollte ein int sein.

Für das gegebene json Sie wirklich brauchen nicht die jsonreader Einstellungen. Was Sie aufgeführt haben, ist die Standardwerte wie auch immer, und Sie haben kein subgrid in Ihrem json.

Versuchen Sie folgendes:

{
"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"]}
]}

Ich war mit WAMP Arbeits 2.4, war ich mit diesem Problem ist verrückt, habe ich versucht, viele Dinge, wie frühere Versionen von PHP zu installieren und wie 5.2, een ich in Windows XP versucht, und viele jqGrid Optionen. Nun danken Oleg schließlich und Mariusz ich die einzige Zeile finden:

$responce = new stdClass(); 

Vor der Verwendung von $ Antwort-all lösen konnte, und jetzt ist mein Gitter ist funktioniert super !!!

Danke meine Freunde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top