2016-01-02 4 views
0

Я создаю небольшое приложение. У меня есть PHP-код, внутри которого есть создание jqGrid, а также у меня есть сервлет, который отправляет строку массива с JSON внутри.jqGrid пусто

Строка выглядит следующим образом:

[ 
    {"id":1,"firstName":"Amishay","lastName":"Vaturi"}, 
    {"id":2,"firstName":"Amir","lastName":"Bilu"}, 
    {"id":3,"firstName":"Michael","lastName":"Keidar"}, 
    {"id":4,"firstName":"Mika","lastName":"Spivak"}, 
    {"id":5,"firstName":"Ksenia","lastName":"Mosorov"}, 
    {"id":6,"firstName":"Rose","lastName":"Wahlem"} 
] 

Проблема в том, я не вижу его в сетке я сделал ... код сетки заключается в следующем:

$("#jqGrid").jqGrid({ 
    url: 'http://10.0.0.4:8080/api/students/all', 
    mtype: "GET", 
    datatype: "jsonstring", 
    colModel: [ 
{ label: 'ID', name: 'id', key: true, width: 75 , height: 50 }, 
{ label: 'First Name', name: 'firstName', width: 150 , height: 50}, 
{ label: 'Last Name', name: 'lastName', width: 150 , height: 50} 
    ], 
    viewrecords: true, 
    width: 780, 
    height: 250, 
    rowNum: 20, 
    pager: "#jqGridPager" 
}); 

Я смотрел здесь и во всей сети, чтобы найти ответ. Я видел, что мне может потребоваться отправить с сервера другой json. возможно, с дополнительной информацией, такой как записи, количество страниц и т. д. Я также видел, что мне может потребоваться объявить json-ридер в свойствах jqGrid. я сделал обе .. еще не работал. Это похоже на то, что я не нашел решение, которое отвечает моей проблеме на 100%. Я буду очень рад, чтобы получить ответ, который работает (:

Большое спасибо

+0

* Тело * ответа HTTP является типичной строкой. Таким образом, вы должны использовать 'datatype:" json "' вместо 'datatype:" jsonstring "', если вы хотите загрузить данные из 'url'. В своем ответе я опубликовал более подробную информацию. – Oleg

ответ

0

Ошибка в коде является использование datatype: "jsonstring" вместо

datatype: "json" 

Кстати вы не 't нужно создать скрытый столбец id, потому что jqGrid присваивает значение id свойство id атрибуту строк (<tr> элементов). Кроме того, я бы рекомендовал вам использовать опцию loadonce: true, потому что формат данных, которые вы используете, t означает оповещение на стороне сервера.

Я создаю демо https://jsfiddle.net/OlegKi/oc7uuh9q/, в котором использованы ваши данные, чтобы продемонстрировать, что все должно работать. Я немного изменил ваш код, чтобы использовать новые функции, реализованные в free jqGrid, вилке jqGrid, которую я разрабатываю.

+0

прежде всего - большое спасибо! Во-вторых, я получаю запрос, а не почтовый запрос (я не знаю, нужно ли что-то менять из-за этого, кроме ключа «mtype»). Но мой сервлет возвращает только строку, которую я разместил. Не предполагается ли она также отправлять номер страницы, количество записей и т. Д. В ответ? Благодаря! –

+0

Это не работает для меня. Что вы предложили. btw - идентификатор не является идентификатором сетки. это идентификатор студента из БД. строка json, которую я возвращаю из сервлета, является той, которую я опубликовал. Я не знаю, в чем проблема. Даже хром-отладчик не имеет ошибок ... –

+0

@NikolaiJakov: Добро пожаловать! Я использовал POST, потому что Echo-сервис JSFiddle не поддерживает GET, но все работает одинаково. Вы пытались с 'datatype:" json "'? Это работает? В любом случае вам нужно использовать 'datatype:" json "', если вы хотите, чтобы jqGrid использовал 'url' и' mtype'. Если вы используете 'datatype:" jsonstring ", то jqGrid ожидает, что данные уже существуют локально в виде строки. Он считывает данные из параметра 'datastr'. – Oleg

Смежные вопросы