Jquery JQGrid обрывается, когда contentType = application / json? - PullRequest
2 голосов
/ 17 мая 2010

Мне пришлось использовать $ .ajaxSetup (), чтобы глобально изменить contentType на application / json

$.ajaxSetup({
  contentType: "application/json; charset=utf-8"
});

(см. Этот вопрос, почему мне пришлось использовать application / json ASPNET MVC - почему ModelState.IsValid false «Поле x обязательно», если в этом поле есть значение? )

Но это нарушает jquery jqrid с этой ошибкой:

Invalid JSON primitive: _search

POST-данные, которые он пытается отправить:

_search=false&nd=1274042681880&rows=20&page=1&sidx=&sord=asc

Какой из них не в формате json, так что, конечно, он не работает. Есть ли способ сказать jqrid, какой тип контента использовать?

Я искал в вики jqrid, но на самом деле не так много документации о чем-либо.

http://www.trirand.com/jqgridwiki/doku.php?do=search&id=contenttype&fulltext=Search

Ответы [ 2 ]

3 голосов
/ 17 мая 2010

Прежде всего, я могу переслать вам мой старый ответ Настройка типа содержимого запросов, выполняемых jQuery jqGrid . Он показывает, как выглядит ajax-запрос внутри jqGrid. Поэтому вы должны использовать параметр ajaxGridOptions в jqGrid вместо перезаписи глобальных настроек в отношении $.ajaxSetup.

Более того, в том же ответе вы можете увидеть, как ваш serializeGridData параметр jqGrid может быть использован для вашей пользовательской сериализации. В Как создать объект JSON для отправки в AJAX WebService? вы можете прочитать, как должно выглядеть JSON-кодирование параметров.

Если у вас останутся проблемы с использованием serializeGridData и ajaxGridOptions, вы должны включить в свой вопрос фрагмент кода использования jqGrid и прототип используемого вами веб-сервиса на сервере.

0 голосов
/ 17 мая 2010

Когда вы настраиваете jqGrid или его источник данных, установите для dataType значение JSON ("json"), например:

$("#myTable").jqGrid ({
  //other options...
  dataType : 'json'
});

Вы также можете увидеть пример проекта кода .

...