Может ли кто-нибудь помочь с тем, что, как я полагаю, является простой проблемой?Я пытаюсь заставить Google App Engine обслуживать данные JSON, которые я могу использовать с jqGrid (v4.0.0), но у меня, похоже, есть последний забор, через который можно перепрыгнуть.Мое приложение представляет собой простой пример списка дел, и, используя интерфейс запросов формы ProtoRPC, я получаю вывод, подобный:
{
rows: [
{
status: Planning,
folder: HPM,
context: WORK,
title: PURSUE HPM ACTIONS,
},
{
status: Planning,
folder: PLANNED MAINTENANCE,
context: WORK,
title: PM ASBESTOS,
},
Я пытаюсь подобрать это со следующими настройками jqGrid:
jQuery("#tasklist").jqGrid({
url:'http://localhost:8084/postservice.get_tasks',
datatype: 'json',
mtype: 'GET',
colNames:['Task','Folder', 'Context','Status'],
colModel :[
{name:'title', index:'Task', width:120},
{name:'folder', index:'Folder', width:40},
{name:'context', index:'Context', width:32},
{name:'status', index:'Status', width:32} ],
pager: jQuery('#pager'),
rowNum:10,
jsonReader: {repeatitems:false, cell:'' },
rowList:[10,20,30],
sortname: 'folder',
sortorder: "desc",
viewrecords: true,
imgpath: 'themes/basic/images',
caption: 'My Jobs'
});
Однако, когда я запускаю этот код, я получаю один из двух ответов: если я оставляю mtype как GET, тогда jqGrid пытается передать параметры URL, которые отклоняются ProtoRPC:
http://localhost:8084/postservice.get_tasks?_search=false&nd=1304325960695&rows=10&page=1&sidx=folder&sord=desc
400 unrecognized RPC format
Если я изменяю mtype наПосле этого у меня есть ответ 200 OK, но в моей сетке нет данных, и с помощью Firebug я не вижу никаких доказательств того, что какие-либо данные были возвращены.
У меня есть несколько вещей, которые я пробовал, ноЯ достиг предела своих навыков здесь (не сложно!), И я был бы признателен за любую помощь.
- мне нужно, чтобы ProtoRPC возвращал другую информацию, которую JsonReader ожидает по умолчанию, т.е., страница, записи и т. д.
- Я пытался следовать ответ Олега , но когда я поместил предложенный код прямо перед настройками jqGrid, у меня были синтаксические ошибки, и запрос никогда не выполнялся:
$. Extend ($. Jgrid.defaults, тип данных: 'json', {ajaxGridOptions: {contentType: "application / json"}, {ajaxRowOptions: {contentType: "application / json", тип: "PUT"}});
- Я просто попытался добавить contentType: "application / json" к параметрам jqGrid (невежество - счастье), но это не имело никакого значения
- Возможно, я получаюинформация возвращается, но я просто не вижу ее в Firebug?
Любая помощь будет высоко ценится.
PS: Используя curl, я могу вернутьсяожидаемые данные, пока я не пытаюсь опубликовать какие-либо данные:
C: \ Users \ Staples1> curl -i -X POST -HContent-Type: application / json -HAccept:application / json http://localhost:8084/postservice.get_tasks
HTTP / 1.0 200 OK Сервер:
Разработка / 1.0 Дата: понедельник, 02 мая 2011
16:55:19 GMT Cache-Control: без кеша
Content-Тип: application / json
Срок действия истекает: пятница, 01 января 1990 г., 00:00:00 по Гринвичу
Длина содержимого: 1069
{"строки": [{"status": "Planning", "folder": "HPM", "context": "WORK "," title ":" P URSUE HPM ACTIONS "}, {" status ":" Planning "," folder ":" PLANNED MAINTENANCE "," conttext ":" WORK "," title ":" PM ASBESTOS "}, {"status": "Next Action", "folder": "PL ANNED MAINTENANCE", "context": "WORK", "title": "Chase Brian на асбесте"}, {"st atus": "Undefined"," folder ":" PLANNED MAINTENANCE "," context ":" WORK "," title ":" PM GAS "}, {" status ":" Hold "," folder ":" PLANNED MAINTENANCE "," context ": "WORK", "title": "Do PBS detail for Gas"}, {"status": "Hold", "folder": "PLANNED MAIN TENANCE", "context": "WORK", "title": "Выполните следующее описание продукта для Gas Servi cing "}, {" status ":" Hold "," folder ":" DPA "," context ":" WORK "," title ":" Разместите уведомления о конфиденциальности на Rosie "}, {"status": "Hold", "folder": "DPA", "context": "WORK", "title": "Info Profiling Info"}, {"status": "Hold", "folder":"DPA", "context": "WORK", "title": "Написать соглашение о доступе к сети для подрядчиков / третьих сторон"}, {"status": "Hold", "folder": "DPA", "context": "РАБОТА", "заголовок": "C CMB на связидля соглашения "}]}
C: \ Users \ Staples1>
И да, я купил ноутбук у Staples!
PPS: проблема в том, чтоИдем дальше.
Наконец, я снова прочитал ответ Олега и добавил к параметрам jqGrid:
ajaxGridOptions: {contentType: 'application / json;charset = utf-8 '},
Теперь из Firebug видно, что я в конечном итоге отправляю ContentType: application / json в ProtoRPC, и я получаю тот же ответ об ошибке, что и приЯ пытаюсь отправить любые данные, используя curl, а именно трассировку от AppEngine, которая заканчивается
Файл "C: \ Program Files (x86) \ Google \ google_appengine \ lib \ simplejson \ simplejson \ decoder.py", строка 315, в декодировании
obj, end = self.raw_decode (s, idx = _w(s, 0) .end ()) Файл "C: \ Program Files (x86) \ Google \ google_appengine \ lib \ simplejson \ simplejson \ decoder.py", строка 333, в raw_decode
повышение ValueError ("Нет JSONобъект может быть декодирован ") ValueError: Ни один объект JSON не может быть декодированdesc
, который не выглядит особенно jsonic.Похоже, единственным препятствием является то, как заставить jqGrid не отправлять данные или некоторые правильно отформатированные данные JSON, или заставить ProtoRPC игнорировать данные?
Предложения приветствуются!