Мне пришлось использовать $ .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
Прежде всего, я могу переслать вам мой старый ответ Настройка типа содержимого запросов, выполняемых jQuery jqGrid . Он показывает, как выглядит ajax-запрос внутри jqGrid. Поэтому вы должны использовать параметр ajaxGridOptions в jqGrid вместо перезаписи глобальных настроек в отношении $.ajaxSetup.
ajaxGridOptions
$.ajaxSetup
Более того, в том же ответе вы можете увидеть, как ваш serializeGridData параметр jqGrid может быть использован для вашей пользовательской сериализации. В Как создать объект JSON для отправки в AJAX WebService? вы можете прочитать, как должно выглядеть JSON-кодирование параметров.
serializeGridData
Если у вас останутся проблемы с использованием serializeGridData и ajaxGridOptions, вы должны включить в свой вопрос фрагмент кода использования jqGrid и прототип используемого вами веб-сервиса на сервере.
Когда вы настраиваете jqGrid или его источник данных, установите для dataType значение JSON ("json"), например:
dataType
"json"
$("#myTable").jqGrid ({ //other options... dataType : 'json' });
Вы также можете увидеть пример проекта кода .