当contentType = application / json时,Jquery JQGrid会中断?

我不得不使用$ .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使用什么contenttype?

我在jqrid wiki上搜索过,但没有太多关于任何内容的文档。

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

首先,我可以转发您的旧答案设置jQuery jqGrid执行的请求的内容类型 。 它显示了ajax请求在jqGrid中的外观。 所以你应该使用ajaxGridOptions参数,而不是覆盖$.ajaxSetup全局设置。

此外,在同一个答案中,您可以看到jqGrid的serializeGridData参数如何用于进行自定义序列化。 在如何构建要发送到AJAX WebService的JSON对象? 你可以阅读参数的JSON编码应该如何。

如果你在使用serializeGridDataajaxGridOptions遇到问题,你应该在你的问题中包含使用jqGrid的代码片段以及你使用的服务器的web服务方法的原型。

当您设置jqGrid或它的数据源时,将其dataType设置为JSON( "json" ),如下所示:

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

您也可以在代码项目上看到一个示例 。