2010-07-04 2 views
0

У меня есть плагин JQGrid на моем веб-сайте, таблица загружается ОК, но без строк для редактирования, выбора или чего-то еще. Он запрашивает сервер, потому что, когда я смотрю журнал, я вижу запрос и его параметры (sidx, _search, rows, sord, nd и т. Д.).JqGrid не загружает данные из JSON

Это код 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 
    }); 
}) 

Это JSON, что сервер возвращает:

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

на стороне сервера я использую Java6, Struts2 и GSon писать JSON , но для этих ajax-вызовов im только запись ответа текстового/простого содержимого

Любая помощь?

+1

Является 'CONTEXT_PATH' на том же домене, что и эта страница? Кроме того, почему вы не используете 'application/json' для ответов? –

+0

Да, CONTEXT_PATH находится в том же домене, он находится в другом .js, который загружается первым (из шаблона) ... Почему я не использую приложение/json, не знаю, только что начал кодирование и didn ' t знать о приложении/json. Во всяком случае, я только что реализовал тест с использованием приложения/json, и то же самое происходит ... –

+1

Не должен JSON быть {"piezaId": 486, ...} Иными словами, без квадратных скобок: [] , –

ответ

1

Вы должны либо формат изменения данных посылать от сервера или использовать некоторые jsonReader или jsonmap техники (смотри, например, jquery with ASP.NET MVC - calling ajax enabled web service или http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data и Mapping JSON data in JQGrid). Самый простой способ для получения данных, которые могут быть считаны со стандартным jsonReader (см 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

Спасибо, используя jsonReader и оно работает! –

+0

Добро пожаловать! Использование 'jsonReader' особенно с функциями, которые вы можете читать практически и данные JSON. Мне нравится эта функция. – Oleg