2010-07-04 4 views
0

J'ai un plugin JQGrid dans mon site Web, la table est en cours de chargement, mais avec aucun-lignes à modifier, sélectionner ou autre. Il demande le serveur parce que quand je regarde le journal je vois la demande et ses paramètres (sidx, _search, lignes, sord, nd, etc.).JqGrid ne charge pas de données à partir de JSON

C'est le code jqGrid:

$(document).ready(function() { 
    var lastsel; 
    jQuery("#rowed3").jqGrid(
      { 
       url : CONTEXT_PATH+'/ajax/getPartesByCategory.do?catid=<s:property value="categoryId" />', 
       datatype: 'json', 
       colNames : [ 'piezaId', 'descripcion', 'disponible'], 
       colModel : [ { 
        name : 'piezaId', 
        index : 'piezaId', 
        align : "right", 
        width : 40 
       }, { 
        name : 'descripcion', 
        index : 'descripcion', 
        width : 360, 
        editable : true 
       }, { 
        name : 'disponible', 
        index : 'disponible', 
        width : 80, 
        editable : true 
       } ], 
       rowNum : 20, 
       rowList : [ 20, 40, 60, 80 ], 
       pager : '#prowed3', 
       sortname : 'id', 
       viewrecords : true, 
       sortorder : "desc", 
       onSelectRow : function(id) { 
        if (id && id !== lastsel) { 
         jQuery('#rowed3').jqGrid('restoreRow', lastsel); 
         jQuery('#rowed3').jqGrid('editRow', id, true); 
         lastsel = id; 
        } 
       }, 
       editurl : "server.php", 
       caption : "Piezas" 
      }); 
    jQuery("#rowed3").jqGrid('navGrid', "#prowed3", { 
     edit : false, 
     add : false, 
     del : false 
    }); 
}) 

C'est le JSON que le serveur renvoie:

[{"piezaId":486,"disponible":1,"descripcion":"Asiento delantero LH","category":{"categoryId":2,"category":"Interior","status":1,"subCategories":[]}},{"piezaId":485,"disponible":1,"descripcion":"Asiento delantero RH","category":{"categoryId":2,"category":"Interior","status":1,"subCategories":[]}}] 

dans le côté serveur que je utilise java6, Struts2 et GSon pour écrire le JSON , mais pour ces appels ajax im seulement écrire à la réponse un texte/contenu plain

Toute aide?

+1

est 'CONTEXT_PATH' sur le même domaine que cette page? Aussi, pourquoi n'utilisez-vous pas 'application/json' pour les réponses? –

+0

Oui, CONTEXT_PATH est dans le même domaine, il est dans un autre .js qui est chargé en premier (à partir du modèle) ... Pourquoi je n'utilise pas application/json, ne sais pas juste commencé le codage et didn ' Je ne connais pas l'application/json. De toute façon je viens de réaliser un test en utilisant application/json et la même chose se produit ... –

+1

Le JSON ne devrait pas être {"piezaId": 486, ...} En d'autres termes, sans les crochets: [] . –

Répondre

1

vous devez soit le format de changement de données envoyer à partir du serveur ou d'utiliser une technique jsonReader ou jsonmap (voir par exemple jquery with ASP.NET MVC - calling ajax enabled web service ou http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data et Mapping JSON data in JQGrid). Le plus simple est de produire des données qui peut être lu avec le jsonReader standard (voir http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data):

{ 
    "total": "1", 
    "page": "1", 
    "records": "2", 
    "rows" : [ 
    {"id" :"1", "cell":["486","1","Asiento delantero LH"]}, 
    {"id" :"2", "cell":["485","1","Asiento delantero RH"]}, 
    ] 
} 
+0

Merci, en utilisant maintenant jsonReader et Ça marche! –

+0

Bienvenue! En utilisant 'jsonReader' spécialement avec les fonctions, vous pouvez lire pratiquement les données JSON. J'aime cette fonctionnalité. – Oleg

Questions connexes