我必须使用$ .ajaxSetup()将contentType全局更改为application / json
$.ajaxSetup({
contentType: "application/json; charset=utf-8"
});
(请参阅此问题,了解为什么我必须使用application / json ASPNET MVC - Why is ModelState.IsValid false "The x field is required" when that field does have a value?)
但这会破坏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
答案 0 :(得分:3)
首先,我可以转发我的旧答案Setting the content-type of requests performed by jQuery jqGrid。它显示了ajax请求在jqGrid中的外观。因此,您应该使用jqGrid的ajaxGridOptions
参数,而不是覆盖$.ajaxSetup
的全局设置。
此外,在同一个答案中,您可以看到jqGrid的serializeGridData
参数如何用于进行自定义序列化。在How do I build a JSON object to send to an AJAX WebService?中,您可以阅读参数的JSON编码应该如何。
如果您在使用serializeGridData
和ajaxGridOptions
时遇到问题,则应在问题中包含使用jqGrid的代码片段以及您使用的服务器Web服务方法的原型。< / p>
答案 1 :(得分:0)
当你设置jqGrid或它的数据源时,将它设置为dataType
为JSON("json"
),如下所示:
$("#myTable").jqGrid ({
//other options...
dataType : 'json'
});